Dela via


New-PSDrive

Skapar tillfälliga och beständiga enheter som är associerade med en plats i ett objektdatalager.

Syntax

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

Description

Cmdleten New-PSDrive skapar tillfälliga och beständiga enheter som mappas till eller associeras med en plats i ett datalager, till exempel en nätverksenhet, en katalog på den lokala datorn eller en registernyckel och beständiga Windows-mappade nätverksenheter som är associerade med en filsystemplats på en fjärrdator.

Tillfälliga enheter finns bara i den aktuella PowerShell-sessionen och i sessioner som du skapar i den aktuella sessionen. De kan ha valfritt namn som är giltigt i PowerShell och kan mappas till valfri lokal resurs eller fjärrresurs. Du kan använda tillfälliga PowerShell-enheter för att komma åt data i det associerade datalagret, precis som med alla mappade nätverksenheter. Du kan ändra platser till enheten med hjälp av Set-Locationoch komma åt innehållet på enheten med hjälp av Get-Item eller Get-ChildItem.

Eftersom tillfälliga enheter bara är kända för PowerShell kan du inte komma åt dem med hjälp av Utforskaren, Windows Management Instrumentation (WMI), Component Object Model (COM), Microsoft .NET Framework eller med verktyg som net use.

Följande funktioner har lagts till i New-PSDrive i PowerShell 3.0:

  • Mappade nätverksenheter. Du kan använda parametern Persist för New-PSDrive för att skapa Windows-mappade nätverksenheter. Till skillnad från tillfälliga PowerShell-enheter är Windows-mappade nätverksenheter inte sessionsspecifika. De sparas i Windows och de kan hanteras med vanliga Windows-verktyg, till exempel Utforskaren och net use. Mappade nätverksenheter måste ha ett enhetsbeteckningsnamn och vara anslutna till en fjärrplats för filsystemet. När kommandot är begränsat lokalt, ingen dot-sourcing, Persist parametern bevarar inte skapandet av en PSDrive- utanför omfånget där kommandot körs. Om du kör New-PSDrive i ett skript, och du vill att enheten ska sparas på obestämd tid, måste du punktkälla skriptet. För bästa resultat, för att tvinga en ny enhet att sparas på obestämd tid, lägger du till parametern Scope i kommandot och anger dess värde till Global. Mer information om dot-sourcing finns i about_Scripts.
  • Externa enheter. När en extern enhet är ansluten till datorn lägger PowerShell automatiskt till en PSDrive- till filsystemet som representerar den nya enheten. Du behöver inte starta om PowerShell. På samma sätt tar PowerShell automatiskt bort PSDrive- som representerar den borttagna enheten när en extern enhet kopplas från datorn.
  • Autentiseringsuppgifter för UNC-sökvägar (Universal Naming Convention).

När värdet för parametern Root är en UNC-sökväg, till exempel \\Server\Share, används autentiseringsuppgifterna som anges i värdet för parametern Credential för att skapa PSDrive-. Annars är autentiseringsuppgifter inte effektiva när du skapar nya filsystemenheter.

Vissa kodexempel använder splatting för att minska radlängden och förbättra läsbarheten. Mer information finns i about_Splatting.

Not

Om du inte använder parametern Scope skapas PSDrives i omfånget där kommandot New-PSDrive körs.

Exempel

Exempel 1: Skapa en tillfällig enhet som mappats till en nätverksresurs

I det här exemplet skapas en tillfällig PowerShell-enhet som mappas till en nätverksresurs.

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

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

New-PSDrive använder parametern Name för att ange PowerShell-enheten med namnet Public och parametern PSProvider för att ange PowerShell FileSystem-providern. Parametern Root anger nätverksresursens UNC-sökväg.

Så här visar du innehållet från en PowerShell-session: Get-ChildItem -Path Public:

Exempel 2: Skapa en tillfällig enhet som mappats till en lokal katalog

Det här exemplet skapar en tillfällig PowerShell-enhet som ger åtkomst till en katalog på den lokala datorn.

$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

Genom att splatting skapas parameternycklarna och värdena. Parametern Name anger enhetsnamnet MyDocs. Parametern PSProvider anger PowerShell-FileSystem-providern. Root anger den lokala datorns katalog. Parametern Description beskriver enhetens syfte. New-PSDrive använder de splattade parametrarna för att skapa den MyDocs enheten.

Så här visar du innehållet från en PowerShell-session: Get-ChildItem -Path MyDocs:

Exempel 3: Skapa en tillfällig enhet för en registernyckel

Det här exemplet skapar en tillfällig PowerShell-enhet som ger åtkomst till en registernyckel. Den skapar en enhet med namnet MyCompany som mappas till HKLM:\Software\MyCompany registernyckel.

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

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

New-PSDrive använder parametern Name för att ange PowerShell-enheten med namnet MyCompany och parametern PSProvider för att ange PowerShell Registry-providern. Parametern Root anger registerplatsen.

Så här visar du innehållet från en PowerShell-session: Get-ChildItem -Path MyCompany:

Exempel 4: Skapa en beständig mappad nätverksenhet med autentiseringsuppgifter

Det här exemplet mappar en nätverksenhet som autentiseras med ett domäntjänstkontos autentiseringsuppgifter. Mer information om PSCredential- objekt som lagrar autentiseringsuppgifter och hur lösenord lagras som en SecureStringfinns i Credential parameterns beskrivning.

$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

Not

Kom ihåg att om du använder ovanstående kodfragment i ett skript anger du parametervärdet Omfång till "Global" för att säkerställa att enheten bevaras utanför det aktuella omfånget.

Variabeln $cred lagrar ett PSCredential- objekt som innehåller tjänstkontots autentiseringsuppgifter. Get-Credential uppmanar dig att ange lösenordet som lagras i en SecureString-.

New-PSDrive skapar den mappade nätverksenheten med hjälp av flera parametrar. Namn anger den S enhetsbeteckning som Windows accepterar. och Root definierar \\Server01\Scripts som plats på en fjärrdator. Persist skapar en Windows-mappad nätverksenhet som sparas på den lokala datorn. PSProvider anger FileSystem provider. Credential använder variabeln $cred för att hämta autentiseringsuppgifterna för tjänstkontot för autentisering.

Den mappade enheten kan visas på den lokala datorn i PowerShell-sessioner, Utforskaren och med verktyg som net use. Så här visar du innehållet från en PowerShell-session: Get-ChildItem -Path S:

Exempel 5: Skapa beständiga och tillfälliga enheter

Det här exemplet visar skillnaden mellan en beständig mappad nätverksenhet och en tillfällig PowerShell-enhet som är mappad till samma nätverksresurs.

Om du stänger PowerShell-sessionen och sedan öppnar en ny session är den tillfälliga PSDrive: inte tillgänglig, men den beständiga X: enheten är tillgänglig. När du bestämmer vilken metod som ska användas för att mappa nätverksenheter bör du fundera på hur du ska använda enheten. Till exempel om den måste vara beständig och om enheten måste vara synlig för andra Windows-funktioner.

# 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

Exempel 6: Skapa beständig enhet i ett skript

PSDrive skapas i omfånget där kommandot New-PSDrive körs. När kommandot körs i ett skript är enhetsmappningen lokal för skriptet. När skriptet avslutas är enheten inte längre tillgänglig.

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

För att säkerställa att enheten är tillgänglig utanför skriptet måste du använda parametern Scope för att skapa enheten i omfånget Global.

Parametrar

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

Typ:SwitchParameter
Alias:cf
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Credential

Anger ett användarkonto som har behörighet att utföra den här åtgärden. Standardvärdet är den aktuella användaren.

Eftersom PowerShell 3.0, när värdet för parametern Root är en UNC-sökväg, kan du använda autentiseringsuppgifter för att skapa filsystemenheter.

Ange ett användarnamn, till exempel User01 eller Domain01\User01, eller ange ett PSCredential- objekt som genereras av cmdleten Get-Credential. Om du skriver ett användarnamn uppmanas du att ange lösenordet.

Autentiseringsuppgifter lagras i ett PSCredential--objekt och lösenordet lagras som en SecureString-.

Not

Mer information om SecureString dataskydd finns i Hur säker är SecureString?.

Typ:PSCredential
Position:Named
Standardvärde:Current user
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Description

Anger en kort textbeskrivning av enheten. Skriv valfri sträng.

Om du vill se beskrivningarna av alla sessionens enheter Get-PSDrive | Format-Table Name, Description.

Om du vill se beskrivningen av en viss enhet skriver du (Get-PSDrive <DriveName>).Description.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Name

Anger ett namn på den nya enheten. Använd en enhetsbeteckning för beständiga mappade nätverksenheter. För tillfälliga PowerShell-enheter är du inte begränsad till enhetsbeteckningar, utan använder en giltig sträng.

Typ:String
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Persist

Anger att den här cmdleten skapar en Windows-mappad nätverksenhet. Parametern Persist är endast tillgänglig i Windows.

Mappade nätverksenheter sparas i Windows på den lokala datorn. De är beständiga, inte sessionsspecifika och kan visas och hanteras i Utforskaren och andra verktyg.

När du omfånget kommandot lokalt, utan dot-sourcing, den Spara parametern inte bevara skapandet av en PSDrive utanför det omfång där du kör kommandot. Om du kör New-PSDrive i ett skript och vill att den nya enheten ska sparas på obestämd tid måste du använda skriptet dot-source. För bästa resultat anger du Global som värdet för parametern Scope och inkluderar Persist i kommandot för bästa resultat.

Namnet på enheten måste vara en bokstav, till exempel D eller E. Värdet för parametern Root måste vara en UNC-sökväg för en annan dator. Värdet för PSProvider måste vara FileSystem.

Om du vill koppla från en Windows-mappad nätverksenhet använder du cmdleten Remove-PSDrive. När du kopplar från en Windows-mappad nätverksenhet tas mappningen bort permanent från datorn, inte bara från den aktuella sessionen.

Mappade nätverksenheter är specifika för ett användarkonto. Mappade enheter som skapats i förhöjda sessioner eller sessioner med hjälp av en annan användares autentiseringsuppgifter visas inte i sessioner som startats med olika autentiseringsuppgifter.

Typ:SwitchParameter
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-PSProvider

Anger den PowerShell-provider som stöder enheter av den här typen.

Om enheten till exempel är associerad med en nätverksresurs eller filsystemkatalog är PowerShell-providern FileSystem. Om enheten är associerad med en registernyckel är providern Registry.

Tillfälliga PowerShell-enheter kan associeras med valfri PowerShell-provider. Mappade nätverksenheter kan endast associeras med FileSystem-providern.

Om du vill se en lista över leverantörerna i powershell-sessionen använder du cmdleten Get-PSProvider.

Typ:String
Position:1
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Root

Anger den datalagerplats som en PowerShell-enhet mappas till.

Du kan till exempel ange en nätverksresurs, till exempel \\Server01\Public, en lokal katalog, till exempel C:\Program Fileseller en registernyckel, till exempel HKLM:\Software\Microsoft.

Tillfälliga PowerShell-enheter kan associeras med en lokal eller fjärransluten plats på valfri providerenhet som stöds. Mappade nätverksenheter kan endast associeras med en filsystemplats på en fjärrdator.

Typ:String
Position:2
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Scope

Anger ett omfång för enheten. De godtagbara värdena för den här parametern är: Global, Localoch Scripteller ett tal i förhållande till det aktuella omfånget. Omfattningar nummer 0 genom antalet omfång. Det aktuella omfångsnumret är 0 och dess överordnade är 1. Mer information finns i about_Scopes.

Typ:String
Position:Named
Standardvärde:Local
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-WhatIf

Visar vad som skulle hända om cmdleten körs. Cmdleten körs inte.

Typ:SwitchParameter
Alias:wi
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

Indata

None

Du kan inte skicka objekt till den här cmdleten

Utdata

PSDriveInfo

Den här cmdleten returnerar ett PSDriveInfo- objekt som representerar den skapade enheten.

Kommentarer

PowerShell innehåller följande alias för Get-PSDrive:

  • Alla plattformar:
    • ndr
  • Windows:
    • mount

New-PSDrive är utformat för att fungera med data som exponeras av alla leverantörer. Om du vill visa en lista över de leverantörer som är tillgängliga i sessionen använder du Get-PSProvider. Mer information om leverantörer finns i about_Providers.

Mappade nätverksenheter är specifika för ett användarkonto. Mappade enheter som skapats i förhöjda sessioner eller sessioner med hjälp av en annan användares autentiseringsuppgifter visas inte i sessioner som startats med olika autentiseringsuppgifter.