2014-09-08 3 views
0

В результате недавней инфекции, связанной с вымогательством, мне нужно найти определенный компьютер на нашей довольно большой сети (тысячи компьютеров). Я установил, что наиболее вероятный способ поиска зараженного компьютера (который зашифровал некоторые общие сетевые ресурсы) - это поиск определенного файла на всех наших компьютерах с помощью PowerShell Remoting, и именно здесь я столкнулся с проблемами.Какая сессия - мой вывод, исходящий при использовании нескольких сеансов удаленного доступа PowerShell?

Мой сценарий до сих пор является:

$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 

Но, без указания которого компьютер, на, или какой из тысячи сессий он приходит от. В идеале я бы просто хотел, чтобы идентификатор сеанса печатался до или после вывода, но не может найти способ сделать это.

Я открыт для других вариантов, если особенно сложно указать, какой выход поступает с сеанса/компьютера в многосессионной среде.

ответ

1

Объекты, возвращаемые с сеансов удаленного доступа, вероятно, имеют свойство PSComputerName, но форматирование по умолчанию не отображает его.

0

Вот пример того, как вы могли бы вернуть то, что вы хотите:

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

Вам просто нужно добавить | выберите pscomputername, fullname для вашего -scriptblock