格式化Powershell命令

时间:2015-01-16 11:56:31

标签: powershell powershell-v2.0 powershell-v3.0

开始我的命令

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

返回

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

TESTBED         NODE1        Online  
MACHINE01       NODE1        Online

所以我运行以下命令只返回值并删除空格和空行。

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

按预期返回机器名称

TESTBED
MACHINE01

我遇到了问题,因为我还要提取该机器的状态(状态)。我试过了。

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

但这不会返回状态,也只是名称。我希望能够找到类似的东西。

TESTBED,Online
MACHINE01,Online

2 个答案:

答案 0 :(得分:1)

您可以使用

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

查询所需的属性并将它们作为对象返回到命令行,然后显示为:

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

或者,您可以使用

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

要完全按照您的要求返回字符串值:

TESTBED,Online  
MACHINE01,Online

答案 1 :(得分:1)

您可以使用格式字符串:

$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 }