Wir versuchen, die zugeordneten Laufwerke eines Benutzers zu erfassen, der an einem Windows 7-Client angemeldet ist. Dazu müssen wir eine geplante Aufgabe erstellen und sie als diesen Benutzer ausführen lassen. Das funktioniert gut, aber das Problem besteht darin, die Daten von der geplanten Aufgabe abzurufen.Abrufen von Daten aus dem geplanten Task
-Code
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
Das Problem scheint die Data.txt
vom Benutzer $ENV:Temp
Ordner abrufen werden. Es scheint ein bisschen eine sich wiederholende Sache zu sein, gibt es keinen saubereren Weg, dies zu tun?
Vielen Dank für Ihre Hilfe.
Schreiben Sie die Daten in eine Freigabe auf einem Server? –
Danke für den Tipp! U dachte nur, es gäbe einen besseren Weg. Denn jetzt muss überprüft werden, wann die Datei mit einer Wartezeit darauf vorhanden ist. – DarkLite1
Werden Sie dies auf einem Domänen-Computer ausführen? Wenn ja, gibt es viel einfachere Möglichkeiten, dies zu tun. –