HOWTO · PowerShell
PowerShell を使用した SMB ドライブのマッピング
この記事では、従来の net use コマンドと、それに対応する Windows PowerShell の New-SMBMapping コマンドについて学習します。
このページの内容
Windows のファイル共有にドライブ文字でアクセスするには、UNC パス(例: \\FileServer\SharedFolder)を、PowerShell の New-SMBMapping コマンドレットまたは net use コマンドでマッピングします。例にあるサーバー名、共有名、ドライブ文字は、ネットワーク管理者から指定された値に置き換えてください。SMB はファイル共有プロトコルです。マッピングすると、共有ネットワーク上の場所をローカルのドライブパスから利用できるようになります。
New-SMBMapping で SMB 共有をマッピングする
PowerShell の New-SMBMapping は、ローカルのドライブパスをリモート共有に割り当てます。LocalPath は Z: のようなドライブ文字、RemotePath は共有の UNC パスです。一般的なコマンドは New-SMBMapping -LocalPath Z: -RemotePath \\ServerName\SharedFolder です。このコマンドレットを利用できる Windows PowerShell セッションで実行し、お使いの環境で有効な共有パスとアクセス許可を指定してください。
次の短い例は、サンプル値を使ってコマンドのプレビューを表示します。サーバーには接続しません。プレースホルダーを置き換えたうえで、表示されたコマンドを適切な Windows PowerShell セッションにコピーして実行してください。
この例を実行します:
このセクションのコードと表示されるラベルや出力は英語のままです。
$drive = 'Z:'
$share = '\\ServerName\SharedFolder'
"New-SMBMapping -LocalPath $drive -RemotePath '$share'"
New-SMBMapping -LocalPath Z: -RemotePath '\\ServerName\SharedFolder'
このプレビューでは、マッピングコマンドを実行する前に、ドライブ文字と UNC パスをまとめて確認できます。実際に接続するには、プレビュースクリプトではなく、コマンドそのものを実行してください。
net use で SMB 共有をマッピングする
net use は、ネットワーク接続の作成や表示に使える Windows のコマンドラインツールです。たとえば、net use F: \\FS01\c$ を実行すると、\\FS01\c$ の共有が F: ドライブに割り当てられます。この例の $ は共有名の一部です。管理共有には、通常の共有より強いアクセス許可が必要な場合があります。
net use * \\FS01\SharedFolder のように指定すると、Windows に空いているドライブ文字を選ばせることもできます。特定の文字を使う必要がない場合に便利ですが、あとでマッピングを参照できるよう、Windows が割り当てた文字を控えておきましょう。コマンド履歴やプロセスの詳細にパスワードが露出するのを避けるため、パスワードをそのままコマンドに追加しないでください。認証が必要な場合は、組織で承認された資格情報の方法を使い、対話型プロンプトやアカウントのコンテキストについて定められた手順に従ってください。
ドライブ文字を選び、共有パスを指定する
共有を使う Windows セッションで、まだ使用されていないドライブ文字を選びます。リモートの場所には、2 つのバックスラッシュで始まり、その後にサーバー名と共有名が続く UNC パスを指定します。例: \\FileServer\Team Files。パスに空白が含まれる場合は、引数全体が 1 つの値として渡されるよう、パスを引用符で囲みます。例: New-SMBMapping -LocalPath Z: -RemotePath '\\FileServer\Team Files'。
共有パスが指すのは共有フォルダーであり、サーバーのディスク全体とは限りません。正確な共有名をサーバーの管理者に確認してください。ドライブマッピングは作成したユーザーとセッションのコンテキストに関連付けられるため、あるコンテキストで表示されるマッピングが別のコンテキストでは表示されないことがあります。
SMB マッピングを確認・管理する
マッピングを作成したら、成功メッセージだけに頼らず、現在の接続を調べてください。Get-SMBMapping コマンドレットは SMB マッピングを一覧表示し、net use でもネットワーク接続を表示できます。ローカルのドライブパスとリモートの UNC パスが意図した値と一致することを確認してから、ドライブを開くか内容を一覧表示し、自分のアカウントで共有にアクセスできることを確かめます。
Z: に作成したマッピングを削除するには、Remove-SMBMapping -LocalPath Z: を使います。従来のコマンドでは net use Z: /delete で切断できます。どちらのコマンドも指定したマッピングに作用するため、削除前にドライブ文字を確認してください。アクセスできない場合は、サーバー名と共有名のつづり、ネットワークへの到達性、アカウントのアクセス許可、現在のセッションで想定した資格情報が使われているかを確認します。そのシステムで利用できるオプションを調べるには、インストール済みのコマンドヘルプで Get-Help New-SMBMapping -Full または Get-Help Remove-SMBMapping -Full を参照してください。
永続性、資格情報、よくある制限
永続性や資格情報のオプションは、Windows のバージョン、コマンドレットの実装、アカウントのコンテキストによって異なる場合があります。コマンド例だけを根拠に、サインイン後や再起動後もマッピングが再接続されると想定しないでください。サポートされるオプションと動作は、インストール済みコマンドのヘルプや組織の Windows 運用ガイドで確認してください。
再利用するパスワードをスクリプトや記事の例、履歴に保存される可能性のあるコマンドに直接記載するのは避けてください。環境で承認された資格情報の手順を使い、そのアカウントに共有へのアクセス権があるか管理者に確認しましょう。スケジュールされたタスク、昇格されたセッション、別ユーザーのセッションでマッピングを利用できない場合は、そのプロセスがどの ID とログオンコンテキストを使っているか確認してください。ここで示すのはコマンドの構造です。特定のサーバーや Windows 構成で接続をテストしたという意味ではありません。