Sdílet prostřednictvím


New-PSDrive

Vytvoří dočasné a trvalé jednotky, které jsou přidružené k umístění v úložišti dat položky.

Syntaxe

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

Description

Rutina New-PSDrive vytvoří dočasné a trvalé jednotky mapované na umístění v úložišti dat nebo přidružené k umístění v úložišti dat, například síťovou jednotku, adresář na místním počítači nebo klíč registru a trvalé síťové jednotky mapované systémem Windows, které jsou přidružené k umístění systému souborů na vzdáleném počítači.

Dočasné jednotky existují pouze v aktuální relaci PowerShellu a v relacích, které vytvoříte v aktuální relaci. Můžou mít libovolný název, který je platný v PowerShellu, a je možné ho namapovat na jakýkoli místní nebo vzdálený prostředek. Dočasné jednotky PowerShellu můžete použít pro přístup k datům v přidruženém úložišti dat stejně jako u jakékoli mapované síťové jednotky. Umístění na jednotku můžete změnit pomocí Set-Locationa získat přístup k obsahu jednotky pomocí Get-Item nebo Get-ChildItem.

Vzhledem k tomu, že dočasné jednotky jsou známé jenom pro PowerShell, nemůžete k nim přistupovat pomocí Průzkumníka souborů, rozhraní WMI (Windows Management Instrumentation), modelu COM (Component Object Model), Rozhraní Microsoft .NET Framework nebo pomocí nástrojů, jako jsou net use.

Do New-PSDrive v PowerShellu 3.0 byly přidány následující funkce:

  • Mapované síťové jednotky. K vytvoření namapovaných síťových jednotek systému Windows můžete použít parametr ZachovatNew-PSDrive. Na rozdíl od dočasných jednotek PowerShellu nejsou namapované síťové jednotky windows specifické pro relaci. Ukládají se ve Windows a dají se spravovat pomocí standardních nástrojů windows, jako je Průzkumník souborů a net, používají. Mapované síťové jednotky musí mít název písmena jednotky a musí být připojené ke vzdálenému umístění systému souborů. Pokud je váš příkaz vymezen místně, bez tečk-sourcing, parametr Persist neuchová vytvoření PSDrive nad rámec rozsahu, ve kterém je příkaz spuštěný. Pokud používáte New-PSDrive uvnitř skriptu a chcete, aby jednotka trvale trvala, musíte skript vytvořit tečkou. Nejlepších výsledků dosáhnete, pokud chcete vynutit trvalé uchování nové jednotky, přidejte do příkazu parametr Scope a nastavte jeho hodnotu na Global. Další informace o dot-sourcing naleznete v tématu about_Scripts.
  • Externí jednotky. Když je externí jednotka připojená k počítači, PowerShell automaticky přidá PSDrive do systému souborů, který představuje novou jednotku. PowerShell nemusíte restartovat. Podobně když se externí jednotka odpojí od počítače, PowerShell automaticky odstraní PSDrive, který představuje odebranou jednotku.
  • Přihlašovací údaje pro cesty UNC (Universal Naming Convention).

Pokud je hodnota parametru Root cesta UNC, například \\Server\Share, přihlašovací údaje zadané v hodnotě parametru Credential se používají k vytvoření PSDrive. V opačném případě přihlašovacích údajů není efektivní při vytváření nových jednotek systému souborů.

Některé ukázky kódu používají k zmenšení délky řádků a zlepšení čitelnosti. Další informace naleznete v tématu about_Splatting.

Poznámka

Pokud nepoužíváte parametr Scope, vytvoří se psDrives v oboru, ve kterém se spustí příkaz New-PSDrive.

Příklady

Příklad 1: Vytvoření dočasné jednotky mapované na sdílenou síť

Tento příklad vytvoří dočasnou jednotku PowerShellu, která je namapovaná na sdílenou síťovou složku.

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

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

New-PSDrive pomocí parametru Name určí jednotku PowerShellu s názvem Public a parametr PSProvider k určení zprostředkovatele FileSystem PowerShellu. Parametr root určuje cestu UNC sdílené síťové složky.

Zobrazení obsahu z relace PowerShellu: Get-ChildItem -Path Public:

Příklad 2: Vytvoření dočasné jednotky namapované na místní adresář

Tento příklad vytvoří dočasnou jednotku PowerShellu, která poskytuje přístup k adresáři v místním počítači.

$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

Splatting vytvoří klíče a hodnoty parametrů. Parametr Name určuje název jednotky MyDocs. Parametr PSProvider určuje zprostředkovatele FileSystem PowerShellu. kořenový určuje adresář místního počítače. Parametr Description popisuje účel jednotky. New-PSDrive používá k vytvoření jednotky MyDocs parametry splatted.

Zobrazení obsahu z relace PowerShellu: Get-ChildItem -Path MyDocs:

Příklad 3: Vytvoření dočasné jednotky pro klíč registru

Tento příklad vytvoří dočasnou jednotku PowerShellu, která poskytuje přístup k klíči registru. Vytvoří jednotku s názvem MyCompany, která je namapovaná na klíč registru HKLM:\Software\MyCompany.

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

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

New-PSDrive pomocí parametru Name určí jednotku PowerShellu s názvem MyCompany a parametr PSProvider k určení zprostředkovatele Registry PowerShellu. Parametr Root určuje umístění registru.

Zobrazení obsahu z relace PowerShellu: Get-ChildItem -Path MyCompany:

Příklad 4: Vytvoření trvalé mapované síťové jednotky pomocí přihlašovacích údajů

Tento příklad mapuje síťovou jednotku ověřenou pomocí přihlašovacích údajů účtu doménové služby. Další informace o objektu PSCredential, který ukládá přihlašovací údaje a jak se hesla ukládají jako SecureString, najdete v popisu přihlašovacích údajů parametru.

$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

Poznámka

Mějte na paměti, že pokud ve skriptu použijete výše uvedený fragment kódu, nastavte hodnotu parametru Scope na "Global", abyste zajistili, že jednotka zůstane mimo aktuální obor.

Proměnná $cred ukládá objekt PSCredential, který obsahuje přihlašovací údaje účtu služby. Get-Credential vás vyzve k zadání hesla uloženého v securestring.

New-PSDrive vytvoří mapovanou síťovou jednotku pomocí několika parametrů. Název určuje písmeno jednotky S, které systém Windows přijímá. a kořenový definuje \\Server01\Scripts jako umístění ve vzdáleném počítači. Trvalé vytvoří namapovanou síťovou jednotku systému Windows uloženou v místním počítači. PSProvider určuje poskytovatele FileSystem. přihlašovací údaje používají proměnnou $cred k získání přihlašovacích údajů účtu služby pro ověřování.

Mapovanou jednotku lze zobrazit na místním počítači v relacích PowerShellu, Průzkumníku souborů a pomocí nástrojů, jako je net, použít. Zobrazení obsahu z relace PowerShellu: Get-ChildItem -Path S:

Příklad 5: Vytvoření trvalých a dočasných jednotek

Tento příklad ukazuje rozdíl mezi trvalou mapovanou síťovou jednotkou a dočasnou jednotkou PowerShellu, která je namapovaná na stejnou sdílenou síťovou složku.

Pokud relaci PowerShellu zavřete a pak otevřete novou relaci, dočasné PSDrive: není k dispozici, ale je k dispozici trvalá jednotka X:. Při rozhodování o tom, kterou metodu použít k mapování síťových jednotek, zvažte, jak jednotku použijete. Například zda musí být trvalá a zda musí být jednotka viditelná pro jiné funkce Systému 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

Příklad 6: Vytvoření trvalé jednotky ve skriptu

PsDrive se vytvářejí v oboru, ve kterém se spouští příkaz New-PSDrive. Při spuštění příkazu ve skriptu je mapování jednotek místní pro skript. Když se skript ukončí, jednotka už není k dispozici.

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

Chcete-li zajistit, aby byla jednotka k dispozici mimo skript, je nutné použít parametr Scope k vytvoření jednotky v oboru Globální.

Parametry

-Confirm

Před spuštěním rutiny vás vyzve k potvrzení.

Typ:SwitchParameter
Aliasy:cf
Position:Named
Default value:False
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Credential

Určuje uživatelský účet, který má oprávnění k provedení této akce. Výchozí hodnota je aktuální uživatel.

Vzhledem k tomu, že PowerShell 3.0 je hodnota parametru Root cesta UNC, můžete k vytvoření jednotek systému souborů použít přihlašovací údaje.

Zadejte uživatelské jméno, například User01 nebo Domain01\User01, nebo zadejte objekt PSCredential vygenerovaný rutinou Get-Credential. Pokud zadáte uživatelské jméno, zobrazí se výzva k zadání hesla.

Přihlašovací údaje jsou uloženy v objektu PSCredential a heslo je uloženo jako SecureString.

Poznámka

Další informace o ochraně dat SecureString najdete v tématu Jak zabezpečený je SecureString?.

Typ:PSCredential
Position:Named
Default value:Current user
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-Description

Určuje stručný textový popis jednotky. Zadejte libovolný řetězec.

Pokud chcete zobrazit popisy všech jednotek relace, Get-PSDrive | Format-Table Name, Description.

Pokud chcete zobrazit popis konkrétní jednotky, zadejte (Get-PSDrive <DriveName>).Description.

Typ:String
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-Name

Určuje název nové jednotky. Pro trvalé mapované síťové jednotky použijte písmeno jednotky. U dočasných jednotek PowerShellu nejste omezeni na písmena jednotek a použijte platný řetězec.

Typ:String
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-Persist

Označuje, že tato rutina vytvoří namapovanou síťovou jednotku windows. Parametr Zachovat je k dispozici pouze ve Windows.

Mapované síťové jednotky se ukládají ve Windows na místním počítači. Jsou trvalé, ne specifické pro relaci a dají se zobrazit a spravovat v Průzkumníkovi souborů a dalších nástrojích.

Když příkaz vymešíte místně bez tečk-sourcing, parametr Zachovat nezachová vytvoření PSDrive nad rámec rozsahu, ve kterém příkaz spouštíte. Pokud spustíte New-PSDrive uvnitř skriptu a chcete, aby nová jednotka trvale trvala, je nutné skript vytvořit tečkou. Nejlepších výsledků dosáhnete tak, že pokud chcete vynutit zachování nové jednotky, zadejte Globální jako hodnotu parametru Scope a do příkazu zahrňte Zachovat.

Název jednotky musí být písmeno, například D nebo E. Hodnota parametru Root musí být cesta UNC jiného počítače. Hodnota parametru PSProvider musí být FileSystem.

K odpojení namapované síťové jednotky systému Windows použijte rutinu Remove-PSDrive. Když odpojíte namapovanou síťovou jednotku systému Windows, mapování se trvale odstraní z počítače, nikoli pouze z aktuální relace.

Mapované síťové jednotky jsou specifické pro uživatelský účet. Mapované jednotky vytvořené ve zvýšených relacích nebo relacích používajících přihlašovací údaje jiného uživatele nejsou viditelné v relacích, které začaly používat jiné přihlašovací údaje.

Typ:SwitchParameter
Position:Named
Default value:False
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-PSProvider

Určuje zprostředkovatele PowerShellu, který podporuje jednotky tohoto typu.

Pokud je například jednotka přidružená ke sdílené síťové složce nebo adresáři systému souborů, poskytovatel PowerShellu je FileSystem. Pokud je jednotka přidružena k klíči registru, poskytovatel je Registry.

Dočasné jednotky PowerShellu je možné přidružit k libovolnému poskytovateli PowerShellu. Mapované síťové jednotky lze přidružit pouze k poskytovateli FileSystem.

Pokud chcete zobrazit seznam zprostředkovatelů v relaci PowerShellu, použijte rutinu Get-PSProvider.

Typ:String
Position:1
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-Root

Určuje umístění úložiště dat, na které se mapuje jednotka PowerShellu.

Zadejte například sdílenou síťovou složku, například \\Server01\Public, místní adresář, například C:\Program Filesnebo klíč registru, například HKLM:\Software\Microsoft.

Dočasné jednotky PowerShellu je možné přidružit k místnímu nebo vzdálenému umístění na libovolné podporované jednotce poskytovatele. Mapované síťové jednotky lze přidružit pouze k umístění systému souborů ve vzdáleném počítači.

Typ:String
Position:2
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-Scope

Určuje rozsah jednotky. Přijatelné hodnoty pro tento parametr jsou: Global, Locala Scriptnebo číslo vzhledem k aktuálnímu oboru. Rozsahy číslo 0 až počet oborů. Aktuální číslo oboru je 0 a nadřazené číslo je 1. Další informace najdete v tématu about_Scopes.

Typ:String
Position:Named
Default value:Local
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-WhatIf

Ukazuje, co se stane, když se rutina spustí. Rutina se nespustí.

Typ:SwitchParameter
Aliasy:wi
Position:Named
Default value:False
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

Vstupy

None

Do této rutiny nemůžete objekty převést.

Výstupy

PSDriveInfo

Tato rutina vrátí objekt PSDriveInfo představující vytvořenou jednotku.

Poznámky

PowerShell obsahuje následující aliasy pro Get-PSDrive:

  • Všechny platformy:
    • ndr
  • Windows:
    • mount

New-PSDrive je navržená tak, aby fungovala s daty vystavenými libovolným poskytovatelem. Pokud chcete zobrazit seznam poskytovatelů dostupných ve vaší relaci, použijte Get-PSProvider. Další informace o poskytovateli naleznete v tématu about_Providers.

Mapované síťové jednotky jsou specifické pro uživatelský účet. Mapované jednotky vytvořené ve zvýšených relacích nebo relacích používajících přihlašovací údaje jiného uživatele nejsou viditelné v relacích, které začaly používat jiné přihlašovací údaje.