我正在運行以下cmdlet命令來獲取檔案使用的行程 ID:
Get-Process | foreach{$processVar = $_;$_.Modules | foreach{if($_.FileName -eq $lockedFile){$processVar.Name " PID:" $processVar.id}}}
上面的 cmdlet 正在生成輸出process1 PID:5260
現在,我需要對 cmdlet 進行管道傳輸,以終止process id我在 cmdlet 下方撰寫的上述內容:
Get-Process | foreach{$processVar = $_;$_.Modules | foreach{if($_.FileName -eq $lockedFile){$processVar.Name " PID:" $processVar.id}}} | Stop-Process $processVar.id
但是,它并沒有停止這個程序。
我基本上想列印出行程名稱和行程ID,然后終止行程。
行程名稱和行程 ID 已正確列印出來,但需要幫助將行程 ID 通過管道傳輸到 cmdlet,然后終止該行程。
uj5u.com熱心網友回復:
也許您可以這樣做,我相信將物件輸出到控制臺會更具可讀性。您需要做的唯一更改是移動條件Stop-Process內部if。
$lockedFile = 'defineThisVariable'
Get-Process | ForEach-Object {
if($_.Modules.FileName.where({$_ -eq $lockedFile})) {
# This is the ouput object to the console
[pscustomobject]@{
Process = $_.Name
PID = $_.id
}
# Here you stop the Process, you can add
# `-Verbose` for more output to console
Stop-Process -Id $_.Id
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/435592.html
