2013-10-04 51 views
1

我有以下脚本可以找到计算机列表的最后一次重启时间。当我运行这个脚本时,它将第一个计算机名称放在一行上,但时间戳记在第二行上。后续的计算机都在同一行上。PowerShell写主机-NoNewLine

这里是例子:

Computer1 
TimeStamp 
Computer2 TimeStamp 
Computer3 TimeStamp 

等等

我希望它是这样的:

Computer1 TimeStamp 
Computer2 TimeStamp 
Computer3 TimeStamp 

我在做什么错?

下面是代码:

$listOfComputers = Import-Csv lastReboot.txt 
ForEach($computer in $listOfComputers) { 
    $name = $computer.Name 
    Write-Host $name -NoNewLine 
    $wmi = Get-WmiObject -Class Win32_OperatingSystem -Computer $name 
    $wmi.ConvertToDateTime($wmi.LastBootUpTime) 
} 

回答

1

当您使用-computernameget-wmiobject,你在结果得到额外的领域 - PSComputerName。您可以选择该字段,以便轻松获取与其他数据相关的名称。

将此与select-object中的表达式组合在一起,即可得到一张漂亮的表格。但是等等 - 还有更多!

Get-WMIObject可以采用名称的阵列-computername参数,省去了你的循环需要完全。

$listOfComputers = IMPORT-CSV r:\lastReboot.txt 
$wmi = Get-WmiObject -Class Win32_OperatingSystem -Computer $listOfComputers.Name; 
$wmi |select pscomputername,@{Name="LastBootTime";Expression={$_.converttodatetime($_.lastbootuptime);}}; 

我们也可以消除$wmi变量,做这一切在一个管道(断行增加了清晰度)。

$listOfComputers = IMPORT-CSV r:\lastReboot.txt 
Get-WmiObject -Class Win32_OperatingSystem -Computer $listOfComputers.Name |` 
    select-object pscomputername,@{Name="LastBootTime";Expression={$_.converttodatetime($_.lastbootuptime);}}; 

甚至做全进口,查询&输出单杆:

IMPORT-CSV r:\lastReboot.txt |` 
    select-object -ExpandProperty name |` 
    foreach-object{ Get-WmiObject -Class Win32_OperatingSystem -Computer $_} |` 
    select-object pscomputername,@{Name="LastBootTime";Expression={$_.converttodatetime($_.lastbootuptime);}}; 

如果需要以后继续使用的数据,你可以将它赋值给一个变量$wmi =最后两个例子中的任何一个的开始(准确地说,第一个例子中的第二行)。

编辑:我只记得AliasProperty PSComputerName已添加到v3中(或在v2中被破坏)。因此,如果您使用的是v2,则需要使用__SERVER

+0

令人印象深刻。谢谢! @alroc – SMPLGRP

3

你混写主机和出默认的输出,往往会导致项目被显示在错误的序列和其他格式的问题:

尝试:

$listOfComputers = IMPORT-CSV lastReboot.txt 
ForEach($computer in $listOfComputers){ 
$name = $computer.Name 
Write-Host "$name " -NoNewLine 
$wmi = Get-WmiObject -Class Win32_OperatingSystem -Computer $name 
write-host $wmi.ConvertToDateTime($wmi.LastBootUpTime) 
} 
+0

这工作得很好! @jon Z – SMPLGRP