web-dev-qa-db-ja.com

システムにマップされているすべてのネットワークドライブのリストを取得するにはどうすればよいですか?

ローカルシステムアカウントでネットワークドライブをマッピングしました。つまり、ローカルシステムアカウントを使用してマシンにログインします。ここで、ログオフして、他の有効なユーザーアカウントを使用してマシンに再度ログインしましたが、アプリケーションでそのマップされたドライブを使用できますが、コンピューターエクスプローラーでそのマップされたドライブを見つけることができませんでした。これは正常ですか?

システム上のすべてのマップされたネットワークドライブを表示する方法はありますか?

私はWindows XPマシンを使用しています。

3
AMIT

はい、それは正常です。ネットワーク接続とそれに割り当てられたドライブ文字はセッションローカルです。通常、これらはログアウト時に(セッション自体が破棄されると)消え、再度ログインするとWinlogonによって再作成されます。

ただし、Local Systemを使用すると混乱します。

Local Systemとして再度ログインし( psexec -desi cmd が役立つ場合があります)、Net Useすべての接続を一覧表示するか、Net Use * /deleteで接続を切断します。

3
user1686
> Net Use

必要なものです。詳細については、 this を参照してください。

3
fretje

スクリプトの一部としてPowerShellを使用して、マップされたドライブをリモートマシンから取得し、それらの設定を人の新しいマシンに移動します:( $ OldComputerを古いコンピューターの名前またはIPに設定します)それは、上のすべてのドライブのリストを調べます。リモートシステムであり、ローカルドライブでない場合は、現在のコンピューター上のそのドライブマッピングを削除して(他のユーザーが使用している場合)、再マップしようとします。最後から2番目の行をコメントアウトします(foreachの上の行、および必要に応じてログまたはmsgboxに独自の行を追加します)。

$netObj = New-Object -com wscript.Network
$WMI1 = [WMISearcher] "Select Name, Providername from win32_mappedLogicalDisk"
$WMI1.Scope.path="\\" + $oldComputer + "\root\cimv2"
$WMI1.Options.ReturnImmediately
$ColDrives = $WMI1.Get()

foreach ($objDrive in $colDrives) {
      $TestLocal = get-wmiObject Win32_LogicalDisk | ? {$_.DeviceID -eq $objDrive.Name} | % {$_.Providername}
      If ($TestLocal) {
        Net Use /Delete $objDrive.Name >> $LogFile
      }#If
      #Map the drive
      Net Use $objDrive.Name $objDrive.ProviderName  >> $LogFile
}#foreach 
0
Brian