0

マップされたネットワーク共有を 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 行を変数に保存できません。どんな助けでも大歓迎です。

4

1 に答える 1