格式化 Powershell 命令

Format Powershell Command

开始我的命令

Get-Clustergroup | ? { $_.groupType -eq "VirtualMachine" }

哪个return

Name            OwnerNode    State
----            ---------    -----

TESTBED         NODE1        Online  
MACHINE01       NODE1        Online

所以我运行下面的命令return只有值并去除白色space和空行。

Get-Clustergroup | ? { $_.groupType -eq "VirtualMachine" } | foreach { $_Name }

return机器名称符合预期,

TESTBED
MACHINE01

我有一个问题,因为我也想拉出那台机器的状态(State)。我试过了。

Get-Clustergroup | ? { $_.groupType -eq "VirtualMachine" } | foreach { $_Name,$_State }

但这不return状态也只是名字而已。我希望能够检索类似的东西。

TESTBED,Online
MACHINE01,Online

您可以使用

Get-ClusterGroup |
    Where-Object  { $_.groupType -eq "VirtualMachine" } |
    Select-Object Name, State

查询您需要的属性并将它们return作为命令行的对象,然后将显示为:

Name            State
----            -----
TESTBED         Online  
MACHINE01       Online

或者,您可以使用

Get-ClusterGroup |
    Where-Object   { $_.groupType -eq 'VirtualMachine' } |
    ForEach-Object { '{0},{1}' -f $_.Name, $_.State }

要 return 完全按照您的要求输入字符串值:

TESTBED,Online  
MACHINE01,Online

您可以使用格式字符串:

$timeframe = (get-date).AddMinutes(-80)
$log | ? { $_.failures -like '*Denied*' -or $_.failures -like '*error*'  -and [datetime]$_.'date-time' -ge $timeframe }

Get-Clustergroup | ? { $_.groupType -eq "VirtualMachine" } | foreach { '{0},{1}' -f $_.Name,$_.State }