我想在运行特定程序的用户之后搜索十个终端服务器。我希望输出包括进程、计算机名和用户。
这个命令基本上做我想要的:
Invoke-Command -ComputerName (Get-Content .\test-servers.txt) -ScriptBlock { get-wmiobject win32_process|where{$_.name -eq "iexplore.exe" }|select name, __SERVER,@{n="owner";e={$_.getowner().user}}} | Format-Table name, PSComputerName, owner -AutoSize
name PSComputerName owner
---- -------------- -----
iexplore.exe mrdsh-test dojo03
iexplore.exe mrdsh-test dojo03
iexplore.exe mrdsh-test baob12
iexplore.exe mrdsh-test baob12
但是当我尝试创建一个将进程作为参数的脚本时,我无法让它工作。
CmdletBinding()]
Param (
[parameter(mandatory=$true)][string]$process
)
Invoke-Command -ComputerName (Get-Content .\test-servers.txt) -ScriptBlock { get-wmiobject win32_process | where{param($process)$_.name -eq $process } | select name, __SERVER,@{n="owner";e={$_.getowner().user}}} | Format-Table name, PSComputerName, owner -AutoSize
我还没有设法将 $process 参数发送到调用命令的服务器。我该怎么做?或者有没有更简单的方法来查找进程并返回进程、计算机名和用户名?