繁体   English   中英

PowerShell写主机-NoNewLine

[英]PowerShell Write-Host -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)
}

您为输出混合了写主机和输出默认值,这通常会导致项目以错误的顺序显示以及其他格式问题:

尝试:

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

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

将它与select-object的表达式结合起来,你得到一个漂亮的表。 但是等等 - 还有更多!

Get-WMIObject可以为-computername参数Get-WMIObject名称,完全不需要你的循环。

$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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM