我有一个脚本:
get-childitem c:\users -include *.mov,*.avi,*.asf,*.flv,*.swf,*.mpg,*.mp3,*.mp4,*.wmv,*.wav,*.jpg,*.tif,*.png,*.gif,*.bmp
-recurse > collection.txt
这在本地计算机上收集时效果很好。但是,我需要同时在几台计算机上运行相同的操作。所以我在BAT文件中尝试了这个:
PSexec @list.txt -u UserID -p Password PowerShell get-childitem c:\users -include *.mov,*.avi,*.asf,*.flv,*.swf,*.mpg,*.mp3,*.mp4,*.wmv,*.wav,*.jpg,*.tif,*.png,*.gif,*.bmp
-recurse > collection.txt 2>&1 pause
这适用于某些远程PC,但我遇到了一些问题:
1)collection.txt文件包含所有信息,但不识别哪一块与哪台计算机有关。
2)在单台计算机上运行时,有时看起来它正在运行,但从未完成和/或从不报告它已完成或写入文件。
是否有另一种方法可以为已登录计算机的所有用户收集相同的数据?或者,我只是做得不对
答案 0 :(得分:0)
更好的方法是使用PSRemoting而不是PSExec。
INDEX(a, i, j) = v;
如果您需要使用PSExec和BAT文件:
$list = "RemoteComputer1","RemoteComputer2"
Invoke-Command -ComputerName $list -ScriptBlock {get-childitem c:\users -include *.mov,*.avi,*.asf,*.flv,*.swf,*.mpg,*.mp3,*.mp4,*.wmv,*.wav,*.jpg,*.tif,*.png,*.gif,*.bmp -recurse} | Out-File .\collection.txt