0

由于最近的勒索软件感染,我需要在我们相当大的网络(数千台计算机)上找到某台计算机。我已经确定找到受感染计算机(加密某些网络共享)的最可行方法是通过 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,但似乎找不到这样做的方法。

如果在多会话环境中很难指出哪个输出来自哪个会话/计算机,我对其他选项持开放态度。

4

2 回答 2

1

The objects returned from the remoting sessions probably have a PSComputerName property, but the default formatting isn't displaying it.

于 2014-09-08T16:49:05.103 回答
0

以下是如何返回所需内容的示例:

invoke-command -computer 'localhost','127.0.0.1' -ScriptBlock { gci c:\ } | select pscomputername,fullname

你只需要附加 | 选择 pscomputername,fullname 到您的 -scriptblock

于 2014-09-08T17:09:01.067 回答