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-Location
e 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 esegueNew-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-PSDrive
usa 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-PSDrive
usa 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 Files
o 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
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.