如何在Format-Table中获取服务器名称?

时间:2018-09-10 15:20:07

标签: powershell powershell-v2.0

这可能是版本问题,但是我只需要将服务器名称放入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

错误:

  

Format-Table:无法将System.Management.Automation.PSObject转换为以下类型之一{System.String,System.Management.Automation.ScriptBlock}。

唯一的区别是$strComputer变量。我正在从一个文本文件中读取内容,并且在v3 +中一切都很漂亮。

不,遗憾的是,我无法在运行它的服务器上升级到较新的PS版本。

1 个答案:

答案 0 :(得分:0)

这两种方法都应该对您有用...

WITH
SET [~ROWS] AS
    {
    FILTER([Time].[Weekly].[Week].Members, Cint([Time].[Weekly].[Week].CurrentMember.Properties("Caption")) > 50)
    }
SELECT
NON EMPTY {[Measures].[Unit Sales]} ON COLUMNS,
NON EMPTY [~ROWS] ON ROWS
FROM [Sales]