net useとNew-SmbGlobalMappingでは挙動が違う!という話
この記事の内容
- Windowsのドライブマッピングには
net useとNew-SmbGlobalMappingの2種類のアプローチがある net useは実行したユーザーのセッション内でのみ有効で、他ユーザーやシステムサービスからはアクセスできないNew-SmbGlobalMappingはシステム全体(グローバル)でのマッピングを作成し、全ユーザー・全プロセスから利用できる- Azure VMとAzure Filesの組み合わせなど、常時マウントが必要な共有ストレージには
New-SmbGlobalMappingが適している - エクスプローラーへの表示タイミングにも違いがあり、実際の挙動を把握することが重要
はじめに:2つのドライブマッピング手段
Windowsでネットワーク上のファイル共有をローカルドライブのように扱う「ドライブマッピング」は、多くの管理者や開発者にとって馴染み深い機能です。古くから使われている net use コマンドが一般的ですが、特定のシナリオにおいてその挙動の違いで混乱することがあります。
たとえば、「ユーザーAでマッピングしたドライブが、ユーザーBやシステムアカウントからアクセスできない」といった問題がその典型です。これは net use コマンドの仕様に起因するものであり、この問題を解決するために New-SmbGlobalMapping というコマンドレットが存在します。
本記事では、net use と New-SmbGlobalMapping の具体的な違いと、それぞれのコマンドがどのようなコンテキストで動作するのかを、実際の動作を交えて詳しく解説します。
net useコマンドの挙動と限界
net use は、Windowsでドライブマッピングを行うための伝統的なコマンドです。特定のドライブレター(例:Z:)にファイル共有のパスを割り当てることで、ユーザーはエクスプローラーなどから簡単にアクセスできるようになります。
# net use の基本的な構文例
net use Z: \\サーバー名\共有名 /user:ユーザー名 パスワード /persistent:yes
このコマンドの重要な特徴は、実行したユーザーのセッション内でのみ有効であるという点です。ログオンスクリプトなどで特定のユーザーのためにドライブを割り当てる場合には非常に便利ですが、以下のような制約があります。
- 他ユーザーからアクセスできない: あるユーザーが
net useでマッピングしたドライブは、他のユーザーアカウントからは見えず、アクセスもできません - システムサービスから利用できない: Windowsサービスなど、システムアカウント権限で動作するプロセスからは、ユーザーがマッピングしたドライブを利用することができません
「そのユーザーがログインしている間だけ使えれば良い」という用途には適していますが、サーバー上で永続的かつグローバルに利用したい場合には不向きです。
New-SmbGlobalMappingによるシステムワイドなマッピング
net use の課題を解決するために登場したのが、PowerShellの New-SmbGlobalMapping コマンドレットです。このコマンドはWindows Server 2019以降などの比較的新しいOSで利用できます。
# New-SmbGlobalMapping の基本的な構文例
$creds = New-Object -TypeName System.Management.Automation.PSCredential `
-argumentlist "ユーザー名", (ConvertTo-SecureString "パスワード" -AsPlainText -Force)
New-SmbGlobalMapping `
-RemotePath \\サーバー名\共有名 `
-LocalPath X: `
-Credential $creds `
-Persistent $true
名前が示す通り、このコマンドはグローバルな(システムワイドな)マッピングを作成します。主な特徴は以下の通りです。
- 全ユーザー・全プロセスで有効: この方法でマッピングされたドライブは、どのユーザーでログオンしても、またシステムアカウントで実行されるサービスからも、ローカルドライブと同様にアクセスできます
- 永続的な接続:
-Persistent $trueを指定することで、システムを再起動してもマッピングが維持されます
これにより、Azure VMからAzure Filesへの接続など、常にマウントさせておきたい共有ストレージに対して、あたかもローカルドライブであるかのように振る舞わせることが可能になります。
実際の挙動で違いを確認する
ここでは、Azure上に用意したWindows Server VMとAzure Files共有を用いて、両者の挙動の違いを具体的に確認していきます。
1. コマンドの実行
VMにリモートデスクトップ接続し、PowerShellで以下の2つのコマンドを実行して、同じファイル共有を異なるドライブレターにマッピングします。
net useで Zドライブ にマッピングNew-SmbGlobalMappingで Xドライブ にマッピング
2. 実行直後のエクスプローラーの表示
コマンドが成功した後、エクスプローラーを開いて「PC(This PC)」を確認すると、Zドライブ(net use で作成)のみが表示されており、Xドライブは見当たりません。
この時点では、New-SmbGlobalMapping で作成したXドライブはエクスプローラーには表示されていないものの、実際には利用可能な状態になっています。
3. コマンドラインからのアクセス
エクスプローラーには表示されていなくても、コマンドラインからのアクセスには問題がないことを確認できます。
# PowerShell からのアクセス確認
Set-Location X: # New-SmbGlobalMapping で作成したドライブ
Set-Location Z: # net use で作成したドライブ
PowerShellからも管理者権限のコマンドプロンプトからも、XドライブとZドライブの両方に問題なくアクセスできます。
4. 別ユーザーでのアクセス
runas コマンドを使い、VM上に作成した別のテストユーザーの権限でコマンドプロンプトを起動します。
runas /user:TestUser cmd.exe
この新しいウィンドウで確認すると、以下の結果が得られます。
| ドライブ | 作成コマンド | 別ユーザーからのアクセス |
|---|---|---|
| Xドライブ | New-SmbGlobalMapping | アクセス可能 |
| Zドライブ | net use | 「指定されたドライブが見つかりません」でアクセス不可 |
この結果から、net use が現在のユーザーセッションに紐づいているのに対し、New-SmbGlobalMapping はシステム全体で有効であることが明確にわかります。
5. サインアウト・サインイン後の挙動
一度VMからサインアウトし、再度同じ管理者ユーザーでサインインします。再びエクスプローラーを開くと、今度はXドライブもZドライブも両方表示されるようになります。
これは、エクスプローラーのプロセスが再起動される際に、システムのグローバルな設定情報を読み込み、New-SmbGlobalMapping で作成したマッピングを認識するためです。サインイン直後の段階ではエクスプローラーがグローバルマッピングを反映しているため、再ログイン後は両方のドライブがエクスプローラー上でも正しく表示されます。
まとめ
net use と New-SmbGlobalMapping は、いずれもWindowsにおけるドライブマッピングの手段ですが、その有効範囲が根本的に異なります。
| 比較項目 | net use | New-SmbGlobalMapping |
|---|---|---|
| 有効範囲 | 実行ユーザーのセッション内のみ | システム全体(全ユーザー・全サービス) |
| 他ユーザーからのアクセス | 不可 | 可能 |
| システムサービスからのアクセス | 不可 | 可能 |
| 永続化 | /persistent:yes で可能 | -Persistent $true で可能 |
| エクスプローラーへの即時表示 | サインイン中は即時表示 | 再サインイン後に表示 |
| 対象OS | 従来のWindowsから利用可 | Windows Server 2019以降など |
用途に応じて適切なコマンドを選択することが重要です。特定ユーザーのログオン時だけ必要なドライブには net use を、Azure FilesをAzure VMに常時マウントしたい場合やシステムサービスからも利用したい場合には New-SmbGlobalMapping を使用することを検討してください。