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 cmdlet New-PSDrive 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 di Windows persistenti 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 tramite Esplora file, Strumentazione gestione Windows (WMI), Component Object Model (COM), Microsoft .NET Framework o con strumenti come net use.

Le funzionalità seguenti sono state aggiunte a New-PSDrive in PowerShell 3.0:

  • Unità di rete mappate. Puoi usare il parametro Persist di New-PSDrive per creare unità di 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 di lettera di unità e essere connesse a un percorso del file system remoto. Quando l'ambito del comando è locale, nessuna origine punto, 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 ambito al comando e impostarne il valore su Global. 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 radice è un percorso UNC, ad esempio \\Server\Share, viene usata la credenziale specificata nel valore del parametro Credential per creare il PSDrive. In caso contrario, credenziali non è efficace 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 ulteriori informazioni, vedere about_Splatting.

Nota

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

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 nome per specificare l'unità di PowerShell denominata Public e il parametro PSProvider per specificare il provider di FileSystem di PowerShell. 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 Nome specifica il nome dell'unità, MyDocs. Il parametro PSProvider specifica il provider di FileSystem di PowerShell. radice 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 Registro di sistema HKLM:\Software\MyCompany.

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

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

New-PSDrive usa il parametro nome per specificare l'unità di PowerShell denominata MyCompany e il parametro PSProvider per specificare il provider di Registry di PowerShell. Il parametro radice 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 credenziali.

$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 ambito su "Globale" per assicurarsi che l'unità venga mantenuta all'esterno dell'ambito corrente.

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

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

L'unità mappata può essere visualizzata nel computer locale nelle sessioni di PowerShell, In 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, il PSDrive: temporaneo non è disponibile, ma l'unità X: persistente è 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 comando New-PSDrive. 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 Global.

Parametri

-Confirm

Richiede una 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 radice è un percorso UNC, è possibile usare le credenziali per creare unità del file system.

Digitare un nome utente, ad esempio User01 o Domain01\User01oppure immettere un oggetto PSCredential generato dal cmdlet Get-Credential. 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 ulteriori informazioni sulla protezione dei dati di SecureString, vedere Quanto è sicuro 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 qualsiasi stringa.

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 di parametro radice 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 cmdlet Remove-PSDrive. Quando si disconnette un'unità di rete mappata di Windows, il mapping viene eliminato definitivamente dal computer, non solo eliminato 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 viene Registry.

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

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

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, Locale Scripto 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 cosa accadrebbe se il cmdlet viene eseguito. 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.