由于最近的勒索软件感染,我需要在我们相当大的网络(数千台计算机)上找到某台计算机。我已经确定找到受感染计算机(加密某些网络共享)的最可行方法是通过PowerShell Remoting在我们所有的计算机上搜索特定文件,这就是我遇到问题的地方。
到目前为止,我的脚本是:
$searchlist = Get-ADComputer -filter *
$cred = Get-Credential [domain]\[domain admin account]
$session = New-PSSession -ComputerName $searchlist.name -Credential $cred
Invoke-Command -Session $searchist -ScriptBlock { Get-ChildItem -Filter DECRYPT_INSTRUCTION.TXT -Recurse }
它运行正常...也就是说我得到一个包含该文件的随机生成的目录的列表。但是,我没有得到任何关于这台计算机的指示,并且鉴于其中有数千台计算机,这有点无用。现在我看到类似的东西:
Directory: C:\92bbf795063ab59a
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 09/06/2014 12:41 AM 190 DECRYPT_INSTRUCTION.TXT
但是,没有任何迹象表明哪台计算机正在运行,或者是哪一台计算机来自哪台计算机。理想情况下,我只想在输出之前或之后打印会话ID,但似乎无法找到方法。
如果特别难以指出哪个输出来自多会话环境中的哪个会话/计算机,那么我对其他选项持开放态度。
答案 0 :(得分:1)
从远程会话返回的对象可能具有PSComputerName属性,但默认格式不显示它。
答案 1 :(得分:0)
以下是如何返回所需内容的示例:
invoke-command -computer 'localhost','127.0.0.1' -ScriptBlock { gci c:\ } | select pscomputername,fullname
你只需要追加|选择pscomputername,fullname到你的-scriptblock