우리는 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
도메인에 가입 된 컴퓨터에서 실행 하시겠습니까? 그렇다면이 작업을 수행하는 훨씬 쉬운 방법이 있습니다. –