Так что я сейчас нахожусь на большом блокпосту. Я работал в PowerShell 5.1, и класс Get-WmiObject
с классом Win32_Service
отлично работал для удаленной остановки/запуска/перезапуска служб удаленно. Однако я обнаружил, что метод .StopService()
был удален в PowerShell 6 (который я использовал, чтобы обойти проблемы с зависимостями, с которыми я постоянно сталкивался). Кроме того, я обнаружил, что переменная -ComputerName
также была удалена из множества различных командлетов.
Поскольку -ComputerName
удален из таких вещей, как командлет Stop-Service
, я изо всех сил пытаюсь понять, как правильно обрабатывать остановку самой службы. Я могу получить услугу или услуги, которые мне нужны, без проблем. Я просто не могу понять, как справиться с остановкой службы.
Старался быть максимально подробным. Я знаю, что упускаю что-то глупо маленькое, но все мои поиски в Google, кажется, возвращают все с PowerShell 5, но так мало с 6.
Спасибо.
Хорошо, не обращайте внимания на этот вопрос. Я решил подойти к поиску в Google по-другому и наткнулся на нужный мне синтаксис. Для тех из вас, кто интересуется, вы не можете запускать команды прямо из возвращенного объекта. Так, например, вы могли сделать «$service.StopService()» прямо в сервисе ранее. Однако теперь вам нужно выполнить вызов этого метода StopService, выполнив «Invoke-CimMethod -Name StopService», и это только после того, как вы передадите ему возвращенный объект Get-CimInstance. Таким образом, полный синтаксис будет выглядеть примерно так.
get-ciminstance win32_service -filter "Name='spooler'" | Invoke-CimMethod -Name StartService
Я нашел действительно хороший веб-сайт, чтобы объяснить и привести действительно хорошие примеры того, почему и какие экземпляры Cim они такие, какие они есть.
https://4sysops.com/archives/managing-services-the-powershell-way-part-7