Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Наш архитектор тестирования недавно ввалился ко мне в офис и подбросил вопрос по PowerShell с очень, очень интересным ответом.
Он захотел остановить любой процесс с указанным именем, кроме экземпляра, в котором выполняется сценарий.
Это можно сделать одним хорошим конвейером:
Get-Process Powershell | Where-Object { $_.ID -ne $pid } | Stop-Process
Get-Process получает позиционный параметр (имя), которое является шаблоном, описывающим имя искомого процесса. Он возвращает кучу объектов ProcessInfo, которые имеют свойство, ID (ID процесса). $pid – это переменная, которая сообщает вам ID текущего процесса в PowerShell. Where-Object { $_.ID -ne $pid } просто возвращает каждый экземпляр, который не является текущим. Stop-Process извлекает нужные данные из каждого объекта ProcessInfo и останавливает переданный ему процесс (здесь это любой экземпляр PowerShell, кроме текущего).
Еще один день и еще один вопрос о PowerShell получил свой ответ.
Надеюсь, это вам поможет.
Джеймс Брандейдж (James Brundage) [MSFT]
Перевод: Виктор Горбунков