Как я могу получить имя сервера в Format-Table? - PullRequest
0 голосов
/ 10 сентября 2018

Вероятно, это проблема версии, но мне просто нужно указать имя сервера в команде Format-Table PowerShell.

$compArray = Get-Content C:\Users\Me\Documents\ServerList_All.txt 
$Proc = foreach ($strComputer in $compArray) {
    Get-WMIObject Win32_Service | Where-Object {
        $_.Name -like 'SQL*' -or
        $_.Name -like 'MSSQL*' -or
        $_.Name -like 'OLAP*' -or
        $_.Name -like 'MSDTS*' -or
        $_.Name -like 'MSOLAP*' -or
        $_.Name -like 'ReportServer*'
    } | Sort-Object -Property Name | Format-Table $strComputer, Name, State
}
$Proc | Out-File C:\Users\ME\Documents\ServerStatus_All.txt

Это работает в PS v2:

| Sort-Object -Property Name | Format-Table Name, State

Это не работает, но работает в PS v3:

| Sort-Object -Property Name | Format-Table $strComputer, Name, State

Ошибка:

Таблица формата: невозможно преобразовать System.Management.Automation.PSObject в один из следующихtypes {System.String, System.Management.Automation.ScriptBlock}.

Единственное отличие - переменная $strComputer.Я читаю из текстового файла, и все прекрасно в v3 +.

Нет, я не могу перейти на более новую версию PS на сервере, с которого я запускаю, к сожалению.

1 Ответ

0 голосов
/ 11 сентября 2018

Это должно работать для вас обоих ...

$compArray = (Get-ADComputer -Filter *).Name
$Proc = foreach ($strComputer in $compArray) {
    Get-WMIObject -Class Win32_Service -ComputerName $strComputer | 
    Where-Object {
        $_.Name -like 'SQL*' -or
        $_.Name -like 'MSSQL*' -or
        $_.Name -like 'OLAP*' -or
        $_.Name -like 'MSDTS*' -or
        $_.Name -like 'MSOLAP*' -or
        $_.Name -like 'ReportServer*'
    } | 
    Select-Object -Property  @{Name = 'Computer';Expression={$strComputer}}, Name, State | 
    Sort-Object -Property Name | 
    Format-Table -AutoSize
}
$Proc


# Results

Computer  Name            State  
--------  ----            -----  
LABSQL01 MSSQLFDLauncher Running
LABSQL01 MSSQLSERVER     Running
LABSQL01 SQLBrowser      Stopped
LABSQL01 SQLSERVERAGENT  Running
LABSQL01 SQLTELEMETRY    Running
LABSQL01 SQLWriter       Running



Computer  Name                 State  
--------  ----                 -----  
LABWSM01 MSSQL$MICROSOFT##WID Stopped
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...