簡體   English   中英

Powershell腳本的升級輸出

[英]Upgraded output for powershell script

我正在嘗試編寫將檢查服務器主機名的腳本。 我現在有:

Computers.txt

    192.168.10.10
    192.168.10.11
    192.168.10.12

和腳本:

    $servers = get-content "C:\Script\computers.txt"
Invoke-Command -Credential company\admin1 -ComputerName $computers -scriptblock {[Environment]::GetEnvironmentVariable("ComputerName")} | out-file C:\Script\report_hostnames.txt

我有報告:

Computer1
Computer2
Computer3

您能幫我添加要報告的IP地址和錯誤狀態,如下所示:

192.168.10.10 Computer1
192.168.10.11 Computer1
192.168.10.12 Computer Unavailable

我試過了:foreach; 嘗試,捕捉,是否存在,否則無法理解如何正確使用它。

嘗試這個:

get-content "C:\Script\computers.txt" | foreach {
  $Response = Invoke-Command -Credential company\admin1 -ComputerName $_ -scriptblock {[Environment]::GetEnvironmentVariable("ComputerName")} 

  write-output "$_ $Response" | out-file C:\Script\report_hostnames.txt
}

使用-Co​​mputerName屬性內部的數組,然后將輸出傳遞到外文件,並不能使您訪問-ComputerName屬性的內容(至少我知道)。 將其分解為一個基本的foreach即可。

您應該能夠使用DNS查找主機名。 例:

Get-Content "IPAddresses.txt" | ForEach-Object {
  $outputObject = [PSCustomObject] @{
    "IPAddress" = $_
    "HostName"  = $null
  }
  try {
    $outputObject.HostName = [Net.Dns]::GetHostEntry($_).HostName
  }
  catch [Management.Automation.MethodInvocationException] {
    $outputObject.HostName = $_.Exception.InnerException.Message
  }
  $outputObject
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM