ローカルシステムアカウントでネットワークドライブをマッピングしました。つまり、ローカルシステムアカウントを使用してマシンにログインします。ここで、ログオフして、他の有効なユーザーアカウントを使用してマシンに再度ログインしましたが、アプリケーションでそのマップされたドライブを使用できますが、コンピューターエクスプローラーでそのマップされたドライブを見つけることができませんでした。これは正常ですか?
システム上のすべてのマップされたネットワークドライブを表示する方法はありますか?
私はWindows XPマシンを使用しています。
はい、それは正常です。ネットワーク接続とそれに割り当てられたドライブ文字はセッションローカルです。通常、これらはログアウト時に(セッション自体が破棄されると)消え、再度ログインするとWinlogonによって再作成されます。
ただし、Local System
を使用すると混乱します。
Local System
として再度ログインし( psexec -desi cmd
が役立つ場合があります)、Net Use
すべての接続を一覧表示するか、Net Use * /delete
で接続を切断します。
> Net Use
必要なものです。詳細については、 this を参照してください。
スクリプトの一部として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