由于最近的勒索软件感染,我需要在我们相当大的网络(数千台计算机)上找到某台计算机。我已经确定找到受感染计算机(加密某些网络共享)的最可行方法是通过 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,但似乎找不到这样做的方法。
如果在多会话环境中很难指出哪个输出来自哪个会话/计算机,我对其他选项持开放态度。