Windows 7クライアントにログオンしているユーザーのマップされたドライブを収集しようとしています。これを行うには、スケジュールされたタスクを作成し、それをそのユーザーとして実行する必要があります。これは正常に動作しますが、問題はスケジュールされたタスクからデータを取得することです。スケジュールされたタスクからデータを取得する
コード
Invoke-Command -ScriptBlock {
$User = 'John'
$Script = 'C:\Users\' + $User + '\AppData\Local\Temp' + '\Script.ps1'
$File = 'C:\Users\' + $User + '\AppData\Local\Temp' + '\Data.txt'
$Code = {
$User = 'John'
$File = 'C:\Users\' + $User + '\AppData\Local\Temp' + '\Data.txt'
Get-WmiObject -Class win32_mappedlogicaldisk | Select-Object Name, ProviderName |
Export-Csv $File -Encoding UTF8 -NoTypeInformation
}
$Code | Set-Content $Script -Encoding utf8
schtasks /create /RL HIGHEST /SC ONCE /ST 23:00 /TN "Test" /TR "powershell.exe -ExecutionPolicy Bypass -File '$Script'" /RU "$env:USERDNSDOMAIN\$User"
schtasks /run /TN "Test"
schtasks /delete /F /TN "Test"
for ($i = 0; $i -le 5; $i++) {
if (Test-Path $File) {
Import-Csv $File
Break
}
else {
Start-Sleep -Seconds 1
}
}
} -ComputerName $Computer
問題は、ユーザー$ENV:Temp
フォルダからData.txt
を取得しているようです。それは少し繰り返されているようですが、これを行うクリーナーの方法はありませんか?
ありがとうございました。
サーバー上の共有にデータを書き込みますか? –
チップのためのThx! Uはちょうど良い方法があると思った。これは、ファイルが存在するときに待ち時間を確認する必要があるためです。 – DarkLite1
ドメインに参加したコンピュータでこれを実行しますか?もしそうなら、これを行うもっと簡単な方法があります。 –