Как я могу извлечь "Путь к исполняемому" всех сервисов с помощью PowerShell
Get-Service *sql* | sort DisplayName | out-file c:/servicelist.txt
У меня есть один скрипт PowerShell для извлечения списка всех служб, запущенных на моем локальном компьютере, теперь, помимо отображения "Статус", "Имя" и "Отображаемое имя", я также хочу отобразить "Путь к исполняемому файлу",
Ответы
Ответ 1
Я думаю, вам нужно прибегнуть к WMI:
Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, State, PathName
Обновление Если вы хотите выполнить некоторые манипуляции с выбранными данными, вы можете использовать рассчитанные свойства, как описано здесь.
Например, если вам просто нужен текст в кавычках для Pathname, вы можете разделить на двойные кавычки и взять элемент массива 1:
Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, @{Name="Path"; Expression={$_.PathName.split('"')[1]}} | Format-List
Ответ 2
Вариант запроса WMI, который может быть быстрее (я просто должен был сделать это для клиента SCCM)
$SQLService=(get-wmiobject -Query 'Select * from win32_service where Name like "*SQL*"') | Select-object Name, DisplayName, State, Pathname
Другой трюк заключается в том, чтобы ловушка для множественных результатов SQL, если вы хотите, чтобы имена путей не содержались в Double Quotes (так что вы можете действовать на них)
$SQLService | Select-Object Name, DisplayName, State, @{Name='PathName';Expression=$_.Pathname.replace('"','')}
Большим преимуществом использования -query
в get-wmiobject
(или get-ciminstance
) является скорость обработки. Более старый пример получает полный список, а затем фильтры, в то время как последний захватывает очень прямой список.
Просто добавив два цента :)
Приветствую всех! Sean The Energized Tech