New-PSDrive
アイテム データ ストア内の場所に関連付けられている一時ドライブと永続ドライブを作成します。
構文
New-PSDrive
[-Name] <String>
[-PSProvider] <String>
[-Root] <String>
[-Description <String>]
[-Scope <String>]
[-Persist]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
New-PSDrive
コマンドレットは、ネットワーク ドライブ、ローカル コンピューター上のディレクトリ、レジストリ キーなどのデータ ストア内の場所にマップまたは関連付けられた一時および永続的なドライブ、およびリモート コンピューター上のファイル システムの場所に関連付けられている永続的な Windows マップド ネットワーク ドライブを作成します。
一時ドライブは、現在の PowerShell セッションと、現在のセッションで作成したセッションにのみ存在します。 PowerShell で有効な任意の名前を持ち、任意のローカル リソースまたはリモート リソースにマップできます。 マップされたネットワーク ドライブと同様に、一時的な PowerShell ドライブを使用して、関連付けられているデータ ストア内のデータにアクセスできます。
Set-Location
を使用してドライブに場所を変更し、Get-Item
または Get-ChildItem
を使用してドライブの内容にアクセスできます。
一時ドライブは PowerShell でのみ認識されるため、エクスプローラー、Windows Management Instrumentation (WMI)、コンポーネント オブジェクト モデル (COM)、Microsoft .NET Framework、または net use
などのツールを使用してアクセスすることはできません。
PowerShell 3.0 の New-PSDrive
には、次の機能が追加されました。
- マップされたネットワーク ドライブ。
の
New-PSDrive
パラメーターを使用して、Windows マップト ネットワーク ドライブを作成できます。 一時的な PowerShell ドライブとは異なり、Windows マップされたネットワーク ドライブはセッション固有ではありません。 これらは Windows に保存され、エクスプローラーや net useなどの標準的な Windows ツールを使用して管理できます。 マップされたネットワーク ドライブは、ドライブ文字の名前を持ち、リモート ファイル システムの場所に接続されている必要があります。 コマンドのスコープがローカルにあり、ドット ソーシングがない場合、Persist パラメーターは、コマンドが実行されているスコープを超えて PSDrive の作成を保持しません。 スクリプト内でNew-PSDrive
を実行していて、ドライブを無期限に保持する場合は、スクリプトをドット ソースにする必要があります。 最良の結果を得るには、新しいドライブを強制的に無期限に保持するには、コマンドに Scope パラメーターを追加し、その値を Globalに設定します。 ドット ソーシングの詳細については、about_Scriptsを参照してください。 - 外部ドライブ。 外部ドライブがコンピューターに接続されると、PowerShell によって、新しいドライブを表すファイル システムに PSDrive が自動的に追加されます。 PowerShell を再起動する必要はありません。 同様に、外部ドライブがコンピューターから切断されると、削除されたドライブを表す PSDrive が PowerShell によって自動的に削除されます。
- 汎用名前付け規則 (UNC) パスの資格情報。
ルート パラメーターの値が UNC パス (\\Server\Share
など) の場合、Credential パラメーターの値で指定された資格情報を使用して、PSDriveを作成します。 それ以外の場合、新しいファイル システム ドライブを作成する場合、資格情報 は有効ではありません。
一部のコード サンプルでは、スプラッティングを使用して行の長さを短くし、読みやすさを向上させます。 詳細については、about_Splattingを参照してください。
手記
Scope パラメーターを使用しない限り、PSDrive は、New-PSDrive
コマンドを実行するスコープ内に作成されます。
例
例 1: ネットワーク共有にマップされた一時ドライブを作成する
この例では、ネットワーク共有にマップされる一時的な PowerShell ドライブを作成します。
New-PSDrive -Name "Public" -PSProvider "FileSystem" -Root "\\Server01\Public"
Name Provider Root
---- -------- ----
Public FileSystem \\Server01\Public
New-PSDrive
では、Name パラメーターを使用して Public
という名前の PowerShell ドライブを指定し、PSProvider パラメーターを使用して PowerShell FileSystem
プロバイダーを指定します。
ルート パラメーターは、ネットワーク共有の UNC パスを指定します。
PowerShell セッションから内容を表示するには: Get-ChildItem -Path Public:
例 2: ローカル ディレクトリにマップされた一時ドライブを作成する
この例では、ローカル コンピューター上のディレクトリへのアクセスを提供する一時的な PowerShell ドライブを作成します。
$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 によって、パラメーター キーと値が作成されます。
名 パラメーターは、MyDocs ドライブ名を指定します。
PSProvider パラメーターは、PowerShell FileSystem
プロバイダーを指定します。
ルート は、ローカル コンピューターのディレクトリを指定します。
Description パラメーターは、ドライブの目的を説明します。
New-PSDrive
は、スプラッティングされたパラメーターを使用して MyDocs
ドライブを作成します。
PowerShell セッションから内容を表示するには: Get-ChildItem -Path MyDocs:
例 3: レジストリ キーの一時ドライブを作成する
この例では、レジストリ キーへのアクセスを提供する一時的な PowerShell ドライブを作成します。
HKLM:\Software\MyCompany
レジストリ キーにマップされた MyCompany という名前のドライブが作成されます。
New-PSDrive -Name "MyCompany" -PSProvider "Registry" -Root "HKLM:\Software\MyCompany"
Name Provider Root
---- -------- ----
MyCompany Registry HKLM:\Software\MyCompany
New-PSDrive
では、Name パラメーターを使用して MyCompany
という名前の PowerShell ドライブを指定し、PSProvider パラメーターを使用して PowerShell Registry
プロバイダーを指定します。
ルート パラメーターは、レジストリの場所を指定します。
PowerShell セッションから内容を表示するには: Get-ChildItem -Path MyCompany:
例 4: 資格情報を使用して永続的なマップされたネットワーク ドライブを作成する
この例では、ドメイン サービス アカウントの資格情報で認証されたネットワーク ドライブをマップします。 資格情報を格納する PSCredential オブジェクトと、パスワードを SecureStringとして格納する方法の詳細については、「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
手記
スクリプトで上記のスニペットを使用する場合は、Scope パラメーターの値を "Global" に設定して、ドライブが現在のスコープ外に保持されるようにします。
$cred
変数には、サービス アカウントの資格情報を含む PSCredential オブジェクトが格納されます。
Get-Credential
、SecureStringに格納されているパスワードを入力するように求められます。
New-PSDrive
は、複数のパラメーターを使用して、マップされたネットワーク ドライブを作成します。
名前 は、Windows が受け入れる S
ドライブ文字を指定します。
ルート は、リモート コンピューター上の場所として \\Server01\Scripts
を定義します。
永続化 は、ローカル コンピューターに保存されている Windows マップト ネットワーク ドライブを作成します。 PSProvider FileSystem
プロバイダーを指定します。
資格情報 では、$cred
変数を使用して認証用のサービス アカウント資格情報を取得します。
マップされたドライブは、PowerShell セッション、エクスプローラー、および net useなどのツールを使用して、ローカル コンピューターで表示できます。 PowerShell セッションから内容を表示するには: Get-ChildItem -Path S:
例 5: 永続ドライブと一時ドライブを作成する
この例では、永続的にマップされたネットワーク ドライブと、同じネットワーク共有にマップされる一時的な PowerShell ドライブの違いを示します。
PowerShell セッションを閉じてから新しいセッションを開くと、一時的な PSDrive:
は使用できませんが、永続的な X:
ドライブを使用できます。 ネットワーク ドライブのマップに使用する方法を決定する場合は、ドライブの使用方法を検討してください。 たとえば、永続的にする必要があるかどうか、ドライブを他の 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
例 6: スクリプトに永続ドライブを作成する
PSDrive は、New-PSDrive
コマンドが実行されるスコープ内に作成されます。 スクリプト内でコマンドを実行すると、ドライブマッピングはスクリプトに対してローカルになります。 スクリプトが終了すると、ドライブは使用できなくなります。
New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public" -Scope Global
スクリプトの外部でドライブを使用できるようにするには、Scope パラメーターを使用して、グローバル スコープにドライブを作成する必要があります。
パラメーター
-Confirm
コマンドレットを実行する前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Credential
このアクションを実行するアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。
PowerShell 3.0 以降では、ルート パラメーターの値が UNC パスの場合、資格情報を使用してファイル システム ドライブを作成できます。
User01 や Domain01\User01などのユーザー名を入力するか、 コマンドレットによって生成された Get-Credential
オブジェクトを入力します。 ユーザー名を入力すると、パスワードの入力を求められます。
資格情報は PSCredential オブジェクトに格納され、パスワードは SecureStringとして格納されます。
手記
SecureString データ保護 の詳細については、「SecureString のセキュリティ 方法」を参照してください。.
型: | PSCredential |
配置: | Named |
規定値: | Current user |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Description
ドライブの簡単な説明を指定します。 任意の文字列を入力します。
すべてのセッションのドライブの説明を表示するには、Get-PSDrive | Format-Table Name, Description
します。
特定のドライブの説明を表示するには、「(Get-PSDrive <DriveName>).Description
」と入力します。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Name
新しいドライブの名前を指定します。 永続的なマップされたネットワーク ドライブの場合は、ドライブ文字を使用します。 一時的な PowerShell ドライブの場合、ドライブ文字に限定されるものではなく、任意の有効な文字列を使用します。
型: | String |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Persist
このコマンドレットによって、Windows マップされたネットワーク ドライブが作成されることを示します。 Persist パラメーターは、Windows でのみ使用できます。
マップされたネットワーク ドライブは、ローカル コンピューター上の Windows に保存されます。 これらはセッション固有ではなく永続的であり、エクスプローラーやその他のツールで表示および管理できます。
ドット ソーシングを使用せずにコマンドのスコープをローカルに設定する場合、Persist パラメーターは、コマンドを実行するスコープを超えて PSDrive の作成を保持しません。 スクリプト内 New-PSDrive
実行し、新しいドライブを無期限に保持する場合は、スクリプトをドット ソースする必要があります。 最適な結果を得るには、新しいドライブを強制的に永続化するには、Scope パラメーターの値としてグローバル 指定し、コマンドに Persist を含めます。
ドライブの名前は、D
や E
などの文字にする必要があります。
Root パラメーターの値は、別のコンピューターの UNC パスである必要があります。
PSProvider パラメーターの値を FileSystem
する必要があります。
Windows マップト ネットワーク ドライブを切断するには、Remove-PSDrive
コマンドレットを使用します。 Windows でマップされたネットワーク ドライブを切断すると、マッピングは、現在のセッションから削除されるだけでなく、コンピューターから完全に削除されます。
マップされたネットワーク ドライブは、ユーザー アカウントに固有です。 別のユーザーの資格情報を使用して管理者特権のセッションで作成されたマップされたドライブは、別の資格情報を使用して開始されたセッションには表示されません。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-PSProvider
この種類のドライブをサポートする PowerShell プロバイダーを指定します。
たとえば、ドライブがネットワーク共有またはファイル システム ディレクトリに関連付けられている場合、PowerShell プロバイダーは FileSystem
。 ドライブがレジストリ キーに関連付けられている場合、プロバイダーは Registry
。
一時 PowerShell ドライブは、任意の PowerShell プロバイダーに関連付けることができます。 マップされたネットワーク ドライブは、FileSystem
プロバイダーにのみ関連付けることができます。
PowerShell セッションでプロバイダーの一覧を表示するには、Get-PSProvider
コマンドレットを使用します。
型: | String |
配置: | 1 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Root
PowerShell ドライブのマップ先となるデータ ストアの場所を指定します。
たとえば、\\Server01\Public
などのネットワーク共有、C:\Program Files
などのローカル ディレクトリ、HKLM:\Software\Microsoft
などのレジストリ キーを指定します。
一時 PowerShell ドライブは、サポートされている任意のプロバイダー ドライブ上のローカルまたはリモートの場所に関連付けることができます。 マップされたネットワーク ドライブは、リモート コンピューター上のファイル システムの場所にのみ関連付けることができます。
型: | String |
配置: | 2 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Scope
ドライブのスコープを指定します。 このパラメーターに使用できる値は、グローバル、ローカル、スクリプト、または現在のスコープを基準とした数値です。 スコープの数は 0 からスコープの数です。 現在のスコープ番号は 0 で、親は 1 です。 詳細については、about_Scopesを参照してください。
型: | String |
配置: | Named |
規定値: | Local |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-WhatIf
コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
None
このコマンドレットにオブジェクトをパイプすることはできません
出力
このコマンドレットは、作成されたドライブを表す PSDriveInfo オブジェクトを返します。
メモ
PowerShell には、Get-PSDrive
の次のエイリアスが含まれています。
- すべてのプラットフォーム:
ndr
- ウィンドウズ:
mount
New-PSDrive
は、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションで使用可能なプロバイダーを一覧表示するには、Get-PSProvider
を使用します。 プロバイダーの詳細については、about_Providersを参照してください。
マップされたネットワーク ドライブは、ユーザー アカウントに固有です。 別のユーザーの資格情報を使用して管理者特権のセッションで作成されたマップされたドライブは、別の資格情報を使用して開始されたセッションには表示されません。