実行可能ファイル名のリスト(ファイル拡張子付き)を返すPowerShell関数があり、実行中の場合はこれらのいずれかを強制終了しようとしていますが、あまり成功していません。これが私が使用しているコマンドです:
Get-Executable-Names `
| where { $_ -match ".exe" } `
| foreach { $_ -replace ".exe" } `
| foreach { ps $_ } `
| kill
Get-Executable-Namesの出力を変数に格納し、その内容を表示すると、次のように表示されます。
Path
----
A.exe
B.exe
C.exe
PowerShellはこのエラーを報告しています:
Get-Process:「@ {Path=A}」という名前のプロセスが見つかりません。プロセス名を確認して、コマンドレットを再度呼び出します。
+$Get-実行可能ファイル-名前| ここで、{$ _ -match ".exe"} | foreach {$ _ -replace ".exe"} | foreach {ps <<<< $ _} | kill
+ CategoryInfo:ObjectNotFound:(@ {Path = A}:String)[Get-Process]、ProcessCommandException
この-replace
操作により、パイプデータが次の形式に変更されたようです。
@(Path=A)
@(Path=B)
@(Path=C)
わかりません。ここでは、PowerShellのオブジェクトモデルを誤解しているだけだと思いますが、何を見落としているのでしょうか。