マップされたネットワーク共有を txt ファイルに保存するログオフ スクリプトがあります。
#File path for save
$TxtPath = "C:\temp\" + "$env:UserName" + ".txt"
#Clear existing entries in file
Clear-Content -Path $TxtPath
#Return drive letters
$DriveList = Get-PSDrive | Select-Object -ExpandProperty 'Name' | Select-String -Pattern '^[a-b:d-g:i-z]$'
#Get path for each drive letter and save in specific format (letter;path)
Foreach($Item in $DriveList){
$DrivePath = (Get-PSDrive $Item).DisplayRoot
$Entry = -join($Item, ":", ";", $DrivePath)
Add-Content -Path $TxtPath -Value ($Entry)
}
次に、これらのドライブをリセットしてマップするログオン スクリプトを作成します。
#File path for user drive paths
$TxtPath = "C:\temp\" + "$env:UserName" + ".txt"
#Get current drives
$DriveList = Get-PSDrive | Select-Object -ExpandProperty 'Name' | Select-String -Pattern '^[a-b:d-g:i-z]$'
#Remove current drives
ForEach($Item in $DriveList){
$Drive = -join($Item, ":")
net use $Drive /delete
}
#Map network drives from file
ForEach($Line in Get-Content $TxtPath) {
$DriveLetter,$DrivePath = $Line.split(';')
net use $DriveLetter $DrivePath
}
私の問題は、net use を使用して (ログオン スクリプトで) ドライブを削除およびマップしているため、ログオフ スクリプトの Get-PSDrive 関数がドライブ パスを返さないことです。私が Remove-PSDrive よりも net use を使用している理由は、ドライブが完全に削除されていないためです (まだユーザーのデバイスに表示されています)。
net use (net use Z:) を使用して検索するときに、ネットワーク共有のリモート名の値を取得する方法を誰か教えてもらえますか? このパス (およびこのパスのみ) を単純にキャプチャできれば、それをドライブ文字と共にテキスト ファイルに書き込むことができ、問題を解決できます。
データをファイルに保存することで、正味使用量の結果を取得できることはわかっています。
net use x: > C:\Temp\output.txt
ただし、このデータ/必要な情報の 1 行を変数に保存できません。どんな助けでも大歓迎です。