使用多个PowerShell远程会话时,我的输出是哪个会话?

时间:2014-09-08 16:40:36

标签: powershell powershell-remoting powershell-v4.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,但似乎无法找到方法。

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

2 个答案:

答案 0 :(得分:1)

从远程会话返回的对象可能具有PSComputerName属性,但默认格式不显示它。

答案 1 :(得分:0)

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

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

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