Получить каждый объект get-wmiobject как вывод - PullRequest
0 голосов
/ 12 марта 2020

При использовании get-wmiobject для извлечения служб sql для серверов, я не получаю правильный вывод.

Сценарий:

$server='XYZ'
$q = Get-WmiObject -query "SELECT * FROM win32_service WHERE name LIKE '%MSSQL% OR name LIKE '%SQLAgent%'" -computername $server | Sort-Object -property name | select name,startmode,state; 
$out= "$server" + "," + "$q.name" + "," + "$q.startmode" + "," + "$q.state" 
$out>>$path\output.csv

Вывод:

XYZ,Mssqlserver Sqlserveragent sqlserverbrowser,Auto Auto Manual,Running Running Stopped

Требуемый выход:

XYZ,Mssqlserver,Auto,Running
XYZ,Sqlserveragent,Auto,Running
XYZ,Sqlserverbrowser,Manual,Stopped

1 Ответ

0 голосов
/ 12 марта 2020

Причина в том, что $q содержит массив. Запрос WMI возвращает несколько объектов, поэтому его необходимо повторить. Чтобы включить имя компьютера, добавьте systemname в список свойств.

$q= Get-WmiObject -query `
  "SELECT * FROM win32_service where name like '%mssql%' or name like '%sqlagent%'" -computername $server `
  | Sort-Object -property name | select name,startmode,state,systemname

Затем можно легко преобразовать набор результатов в CSV:

 $q | ConvertTo-Csv -NoTypeInformation
"myserver","MSSQLSERVER","Auto","Running"
"myserver","MSSQLServerADHelper100","Disabled","Stopped"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...