特定のプログラムを実行しているユーザーの後に、10 台のターミナル サーバーを検索したいと考えています。出力にプロセス、コンピューター名、およびユーザーを含めたい。
このコマンドは基本的に私が望むことを行います:
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 パラメータを送信できませんでした。どうすればいいですか?または、プロセスを探してプロセス、コンピューター名、およびユーザー名を返す簡単な方法はありますか?