Condividi tramite


New-PSDrive

Crea unità temporanee e persistenti associate a una posizione in un archivio dati di un elemento.

Sintassi

New-PSDrive
   [-Name] <String>
   [-PSProvider] <String>
   [-Root] <String>
   [-Description <String>]
   [-Scope <String>]
   [-Persist]
   [-Credential <PSCredential>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Descrizione

Il New-PSDrive cmdlet crea unità temporanee e persistenti mappate a o associate a un percorso in un archivio dati, ad esempio un'unità di rete, una directory nel computer locale o una chiave del Registro di sistema e unità di rete mappate permanenti di Windows associate a un percorso del file system in un computer remoto.

Le unità temporanee esistono solo nella sessione corrente di PowerShell e nelle sessioni create nella sessione corrente. Possono avere qualsiasi nome valido in PowerShell e può essere mappato a qualsiasi risorsa locale o remota. È possibile usare unità Di PowerShell temporanee per accedere ai dati nell'archivio dati associato, esattamente come si farebbe con qualsiasi unità di rete mappata. È possibile modificare i percorsi nell'unità usando Set-Locatione accedere al contenuto dell'unità usando Get-Item o Get-ChildItem.

Poiché le unità temporanee sono note solo a PowerShell, non è possibile accedervi usando Esplora file, Strumentazione gestione Windows (WMI), Component Object Model (COM), Microsoft .NET Framework o con strumenti come net use.

In PowerShell 3.0 sono state aggiunte New-PSDrive le funzionalità seguenti:

  • Unità di rete su cui è stato eseguito il mapping È possibile usare il parametro Persist di per creare unità di New-PSDrive rete mappate di Windows. A differenza delle unità temporanee di PowerShell, le unità di rete mappate di Windows non sono specifiche della sessione. Vengono salvati in Windows e possono essere gestiti usando strumenti di Windows standard, ad esempio Esplora file e net use. Le unità di rete mappate devono avere un nome con lettera di unità ed essere connesse a un percorso nel file system remoto. Quando l'ambito del comando è in locale, senza dot-sourcing, il parametro Persist non rende persistente la creazione di un PSDrive oltre l'ambito in cui è in esecuzione il comando. Se si esegue New-PSDrive all'interno di uno script e si vuole che l'unità venga mantenuta per un periodo illimitato, è necessario usare dot source per lo script. Per ottenere risultati ottimali, per forzare la persistenza illimitata di una nuova unità, aggiungere il parametro Scope al comando e impostarne il valore su Globale. Per altre informazioni sul dot-sourcing, vedere about_Scripts.
  • Unità esterne. Quando un'unità esterna è connessa al computer, PowerShell aggiunge automaticamente un PSDrive al file system che rappresenta la nuova unità. Non è necessario riavviare PowerShell. Analogamente, quando un'unità esterna viene disconnessa dal computer, PowerShell elimina automaticamente il PSDrive che rappresenta l'unità rimossa.
  • Credenziali per i percorsi UNC (Universal Naming Convention).

Quando il valore del parametro Root è un percorso UNC, ad esempio \\Server\Share, le credenziali specificate nel valore del parametro Credential vengono usate per creare PSDrive. In caso contrario, le credenziali non sono valide quando si creano nuove unità del file system.

Alcuni esempi di codice usano lo splatting per ridurre la lunghezza della riga e migliorare la leggibilità. Per altre informazioni, vedere about_Splatting.

Nota

A meno che non si usi il parametro Scope , PSDrives viene creato nell'ambito in cui viene eseguito il New-PSDrive comando.

Esempio

Esempio 1: Creare un'unità temporanea mappata a una condivisione di rete

Questo esempio crea un'unità PowerShell temporanea mappata a una condivisione di rete.

New-PSDrive -Name "Public" -PSProvider "FileSystem" -Root "\\Server01\Public"

Name       Provider      Root
----       --------      ----
Public     FileSystem    \\Server01\Public

New-PSDriveusa il parametro Name per specificare l'unità di PowerShell denominata Public e il parametro PSProvider per specificare il provider di PowerShellFileSystem. Il parametro Root specifica il percorso UNC della condivisione di rete.

Per visualizzare il contenuto da una sessione di PowerShell: Get-ChildItem -Path Public:

Esempio 2: Creare un'unità temporanea mappata a una directory locale

Questo esempio crea un'unità PowerShell temporanea che fornisce l'accesso a una directory nel computer locale.

$parameters = @{
    Name = "MyDocs"
    PSProvider = "FileSystem"
    Root = "C:\Users\User01\Documents"
    Description = "Maps to my My Documents folder."
}
New-PSDrive @parameters

Name        Provider      Root
----        --------      ----
MyDocs      FileSystem    C:\Users\User01\Documents

Lo splatting crea le chiavi e i valori dei parametri. Il parametro Name specifica il nome dell'unità MyDocs. Il parametro PSProvider specifica il provider PowerShell FileSystem . Root specifica la directory del computer locale. Il parametro Description descrive lo scopo dell'unità. New-PSDrive usa i parametri splatted per creare l'unità MyDocs .

Per visualizzare il contenuto da una sessione di PowerShell: Get-ChildItem -Path MyDocs:

Esempio 3: Creare un'unità temporanea per una chiave del Registro di sistema

Questo esempio crea un'unità di PowerShell temporanea che fornisce l'accesso a una chiave del Registro di sistema. Crea un'unità denominata MyCompany mappata alla chiave del HKLM:\Software\MyCompany Registro di sistema.

New-PSDrive -Name "MyCompany" -PSProvider "Registry" -Root "HKLM:\Software\MyCompany"

Name           Provider      Root
----           --------      ----
MyCompany      Registry      HKLM:\Software\MyCompany

New-PSDriveusa il parametro Name per specificare l'unità di PowerShell denominata MyCompany e il parametro PSProvider per specificare il provider di PowerShellRegistry. Il parametro Root specifica il percorso del Registro di sistema.

Per visualizzare il contenuto da una sessione di PowerShell: Get-ChildItem -Path MyCompany:

Esempio 4: Creare un'unità di rete mappata permanente usando le credenziali

Questo esempio esegue il mapping di un'unità di rete autenticata con le credenziali di un account del servizio di dominio. Per altre informazioni sull'oggetto PSCredential che archivia le credenziali e sul modo in cui le password vengono archiviate come SecureString, vedere la descrizione del parametro Credential .

$cred = Get-Credential -Credential Contoso\ServiceAccount
New-PSDrive -Name "S" -Root "\\Server01\Scripts" -Persist -PSProvider "FileSystem" -Credential $cred
Net Use

Status       Local     Remote                    Network
---------------------------------------------------------
OK           S:        \\Server01\Scripts        Microsoft Windows Network

Nota

Tenere presente che, se si usa il frammento di codice precedente in uno script, impostare il valore del parametro Scope su "Global" per assicurarsi che l'unità venga mantenuta all'esterno dell'ambito corrente.

La $cred variabile archivia un oggetto PSCredential che contiene le credenziali dell'account del servizio. Get-Credential richiede di immettere la password archiviata in un oggetto SecureString.

New-PSDrive crea l'unità di rete mappata usando diversi parametri. Name specifica la lettera di S unità accettata da Windows. e Root definisce \\Server01\Scripts come percorso in un computer remoto. Persist crea un'unità di rete mappata di Windows salvata nel computer locale. PSProvider specifica il FileSystem provider. Le credenziali usano la $cred variabile per ottenere le credenziali dell'account del servizio per l'autenticazione.

L'unità mappata può essere visualizzata nel computer locale nelle sessioni di PowerShell, Esplora file e con strumenti come net use. Per visualizzare il contenuto da una sessione di PowerShell: Get-ChildItem -Path S:

Esempio 5: Creare unità permanenti e temporanee

Questo esempio mostra la differenza tra un'unità di rete mappata permanente e un'unità di PowerShell temporanea mappata alla stessa condivisione di rete.

Se si chiude la sessione di PowerShell e quindi si apre una nuova sessione, l'unità temporanea PSDrive: non è disponibile, ma l'unità persistente X: è disponibile. Quando si decide quale metodo usare per eseguire il mapping delle unità di rete, valutare come si userà l'unità. Ad esempio, se deve essere persistente e se l'unità deve essere visibile ad altre funzionalità di Windows.

# Create a temporary PowerShell drive called PSDrive:
# that's mapped to the \\Server01\Public network share.
New-PSDrive -Name "PSDrive" -PSProvider "FileSystem" -Root "\\Server01\Public"

# Use the Persist parameter of New-PSDrive to create the X: mapped network drive,
# which is also mapped to the \\Server01\Public network share.
New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"

# Now, you can use the Get-PSDrive drive cmdlet to examine the two drives.
# The drives appear to be the same, although the network share name appears only
# in the root of the PSDrive: drive.
Get-PSDrive -Name "PSDrive", "X"

Name       Provider      Root
----       --------      ----

PsDrive    FileSystem    \\Server01\public
X          FileSystem    X:\

# Get-Member cmdlet shows that the drives have the same object type,
# System.Management.Automation.PSDriveInfo.
Get-PSDrive "PSDrive", "x" | Get-Member

TypeName: System.Management.Automation.PSDriveInfo

Name                MemberType   Definition
----                ----------   ----------
CompareTo           Method       System.Int32 CompareTo(PSDriveInfo drive),
Equals              Method       System.Boolean Equals(Object obj),
GetHashCode         Method       System.Int32 GetHashCode()
...

# Net Use and Get-CimInstance for the Win32_LogicalDisk class,
# and Win32_NetworkConnection class find only the persistent X: drive.
# PowerShell temporary drives are known only to PowerShell.
Net Use
Get-CimInstance Win32_LogicalDisk | Format-Table -Property DeviceID
Get-CimInstance Win32_NetworkConnection

Status       Local     Remote                    Network
--------------------------------------------------------
OK           X:        \\contoso-pc\data         Microsoft Windows Network

deviceid
--------
C:
D:
X:

LocalName    RemoteName              ConnectionState          Status
---------    ----------              ---------------          ------
X:           \\products\public       Disconnected             Unavailable

Esempio 6: Creare un'unità persistente in uno script

PsDrives viene creato nell'ambito in cui viene eseguito il New-PSDrive comando. Quando il comando viene eseguito all'interno di uno script, il mapping dell'unità è locale allo script. Quando lo script viene chiuso, l'unità non è più disponibile.

New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public" -Scope Global

Per assicurarsi che l'unità sia disponibile all'esterno dello script, è necessario usare il parametro Scope per creare l'unità nell'ambito globale .

Parametri

-Confirm

Richiede conferma prima di eseguire il cmdlet.

Tipo:SwitchParameter
Alias:cf
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Credential

Specifica un account utente autorizzato a eseguire questa azione. Il valore predefinito è l'utente corrente.

Poiché PowerShell 3.0, quando il valore del parametro Root è un percorso UNC, è possibile usare le credenziali per creare unità del file system.

Digitare un nome utente, ad esempio User01 o Domain01\User01, oppure immettere un oggetto PSCredential generato dal Get-Credential cmdlet. Se si digita un nome utente, viene richiesto di immettere la password.

Le credenziali vengono archiviate in un oggetto PSCredential e la password viene archiviata come SecureString.

Nota

Per altre informazioni sulla protezione dei dati SecureString , vedere How secure is SecureString?.

Tipo:PSCredential
Posizione:Named
Valore predefinito:Current user
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Description

Specifica una breve descrizione testuale dell'unità. Digitare una stringa qualsiasi.

Per visualizzare le descrizioni di tutte le unità della sessione, Get-PSDrive | Format-Table Name, Description.

Per visualizzare la descrizione di un'unità specifica, digitare (Get-PSDrive <DriveName>).Description.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Name

Specifica un nome per la nuova unità. Per le unità di rete mappate persistenti, usare una lettera di unità. Per le unità temporanee di PowerShell, non è possibile limitare le lettere di unità, usare qualsiasi stringa valida.

Tipo:String
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Persist

Indica che questo cmdlet crea un'unità di rete mappata di Windows. Il parametro Persist è disponibile solo in Windows.

Le unità di rete mappate vengono salvate in Windows nel computer locale. Sono persistenti, non specifici della sessione e possono essere visualizzati e gestiti in Esplora file e in altri strumenti.

Quando si definisce l'ambito del comando in locale, senza dot-sourcing, il parametro Persist non rende persistente la creazione di un PSDrive oltre l'ambito in cui si esegue il comando. Se si esegue New-PSDrive all'interno di uno script e si vuole che la nuova unità venga mantenuta per un periodo illimitato, è necessario usare dot source per lo script. Per ottenere risultati ottimali, per forzare la persistenza di una nuova unità, specificare Global come valore del parametro Scope e includere Persist nel comando.

Il nome dell'unità deve essere una lettera, ad esempio D o E. Il valore del parametro Root deve essere un percorso UNC di un computer diverso. Il valore del parametro PSProvider deve essere FileSystem.

Per disconnettere un'unità di rete mappata di Windows, usare il Remove-PSDrive cmdlet . Quando si disconnette un'unità di rete mappata di Windows, il mapping viene eliminato definitivamente dal computer, non solo dalla sessione corrente.

Le unità di rete mappate sono specifiche di un account utente. Le unità mappate create in sessioni o sessioni elevate che usano le credenziali di un altro utente non sono visibili nelle sessioni avviate con credenziali diverse.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-PSProvider

Specifica il provider di PowerShell che supporta le unità di questo tipo.

Ad esempio, se l'unità è associata a una condivisione di rete o a una directory del file system, il provider PowerShell è FileSystem. Se l'unità è associata a una chiave del Registro di sistema, il provider è Registry.

Le unità temporanee di PowerShell possono essere associate a qualsiasi provider di PowerShell. Le unità di rete mappate possono essere associate solo al FileSystem provider.

Per visualizzare un elenco dei provider nella sessione di PowerShell, usare il Get-PSProvider cmdlet .

Tipo:String
Posizione:1
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Root

Specifica il percorso dell'archivio dati a cui viene eseguito il mapping di un'unità Di PowerShell.

Ad esempio, specificare una condivisione di rete, ad esempio \\Server01\Public, una directory locale, ad esempio C:\Program Fileso una chiave del Registro di sistema, ad esempio HKLM:\Software\Microsoft.

Le unità temporanee di PowerShell possono essere associate a una posizione locale o remota in qualsiasi unità del provider supportata. Le unità di rete mappate possono essere associate solo a un percorso del file system in un computer remoto.

Tipo:String
Posizione:2
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Scope

Specifica un ambito per l'unità. I valori accettabili per questo parametro sono: Global, Local e Script o un numero relativo all'ambito corrente. L'ambito è compreso tra 0 e il numero di ambiti. Il numero di ambito corrente è 0 e il relativo elemento padre è 1. Per altre informazioni, vedere about_Scopes.

Tipo:String
Posizione:Named
Valore predefinito:Local
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-WhatIf

Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.

Tipo:SwitchParameter
Alias:wi
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

Input

None

Non è possibile inviare tramite pipe oggetti a questo cmdlet

Output

PSDriveInfo

Questo cmdlet restituisce un oggetto PSDriveInfo che rappresenta l'unità creata.

Note

PowerShell include gli alias seguenti per Get-PSDrive:

  • Tutte le piattaforme:
    • ndr
  • Windows:
    • mount

New-PSDrive è progettato per lavorare con i dati esposti da qualsiasi provider. Per elencare i provider disponibili nella sessione, usare Get-PSProvider. Per altre informazioni sui provider, vedere about_Providers.

Le unità di rete mappate sono specifiche di un account utente. Le unità mappate create in sessioni o sessioni elevate che usano le credenziali di un altro utente non sono visibili nelle sessioni avviate con credenziali diverse.