簡體   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