【发布时间】:2019-10-15 08:07:27
【问题描述】:
我正在使用此 PowerShell 代码获取一个 txt 文件,其中包含回收站中的所有文件及其原始位置(来自 Listing files in recycle bin):
(New-Object -ComObject Shell.Application).NameSpace(0x0a).Items()|select @{n="OriginalLocation";e={$_.ExtendedProperty("{9B174B33-40FF-11D2-A27E-00C04FC30871} 2")}},Name| export-csv -delimiter "\" -path C:\Desktop\file_list_$(get-date -f yyyyMMdd).txt -NoTypeInformation
(gc C:\Desktop\file_list_$(get-date -f yyyyMMdd).txt | select -Skip 1)| % {$_.Replace('"','')}| set-content C:\Desktop\file_list_$(get-date -f yyyyMMdd).txt
而且效果很好。 现在的问题是,我被要求从计算机 A 启动此 .ps1 文件,以获取计算机 B 的回收站中的文件(例如 \172.00.00.00),进入 \172.00.00.00\folder 并启动 cmd启动该 .ps1 文件的文件。
我已经设置了
(New-Object -ComObject Shell.Application).NameSpace(0x0a).Items()|select @{n="OriginalLocation";e={$_.ExtendedProperty("{9B174B33-40FF-11D2-A27E-00C04FC30871} 2")}},Name| export-csv -delimiter "\" -path \\172.00.00.00\C\Desktop\file_list_$(get-date -f yyyyMMdd).txt -NoTypeInformation
(gc \\172.00.00.00\C\Desktop\file_list_$(get-date -f yyyyMMdd).txt | select -Skip 1)| % {$_.Replace('"','')}| set-content \\172.00.00.00\C\Desktop\file_list_$(get-date -f yyyyMMdd).txt
但是我如何告诉它检查计算机B的回收站?
谢谢!
【问题讨论】:
-
您可以使用 Invoke-Command 在远程系统上执行您的代码。 docs.microsoft.com/en-us/powershell/scripting/learn/remoting/…
-
这在很大程度上取决于您的设置和环境。就像@Patrick 建议的那样, Invoke-Command 将是一种选择。如果您有计算机列表,可能值得使用 PSEXEC:docs.microsoft.com/en-us/sysinternals/downloads/psexec
-
当然你可以使用 PSEXEC,但我更喜欢 powershell,因为你也可以一次调用多个服务器的命令,你可以在 powershell 中进行简单的错误处理。
-
谢谢,Invoke-Command 非常完美!