使用一个脚本远程获取PC和监视器信息



代码1远程获取PC信息,代码2远程获取Monitor信息。如何将代码2合并到代码1中?我希望输出看起来像PC信息,然后是监视器信息。我试着合并,但有很多错误。

代码1记录所有信息,如查询的计算机和un查询。

    Code 1:  Courtesy of Alexander Obersht

    $ArrComputers = gc .computernames.txt
    $OutputLog = ".output.log" 
    $NotRespondingLog = ".notresponding.log" 
    $ErrorActionPreference = "Stop" 
    Clear-Host
     ForEach ($Computer in $ArrComputers) 
    {
try
{
    $computerSystem = get-wmiobject Win32_ComputerSystem -Computer $Computer
    $computerBIOS = get-wmiobject Win32_BIOS -Computer $Computer
    $Version = Get-WmiObject -Namespace "RootCIMv2" `
        -Query "Select * from Win32_ComputerSystemProduct" `
        -computer $computer | select -ExpandProperty version
}
catch
{
    $Computer | Out-File -FilePath $NotRespondingLog -Append -Encoding UTF8
    continue
}
$Header = "System Information for: {0}" -f $computerSystem.Name
write-host $Header -BackgroundColor DarkCyan
$Header | Out-File -FilePath $OutputLog -Append -Encoding UTF8
$Output = (@"
-------------------------------------------------------
   Model: {0} 
  Serial Number: {1} 
  Version: {2} 
   -------------------------------------------------------
  "@) -f $computerSystem.Model, $computerBIOS.SerialNumber, $Version

Write-Host $Output
$Output | Out-File -FilePath $OutputLog -Append -Encoding UTF8
   }

   Code 2: 

   $users = gc .computernames1.txt
   gwmi WmiMonitorID -Namespace rootwmi -computername $users |
   Select PSComputerName,
     @{n="Model";e={[System.Text.Encoding]::ASCII.GetString($_.UserFriendlyName -ne 00)}},
     @{n="Serial Number";e={[System.Text.Encoding]::ASCII.GetString($_.SerialNumberID -ne 00)}} |
     Format-List | Out-File '.report.csv'

根据您之前的问题更新了我的解决方案:

$ArrComputers = gc .computernames.txt
$OutputLog = ".output.log" # Main log
$NotRespondingLog = ".notresponding.log" # Logging "unqueried" hosts
$ErrorActionPreference = "Stop" # Or add '-EA Stop' to Get-WmiObject queries
Clear-Host
ForEach ($Computer in $ArrComputers) 
{
    try
    {
        $computerSystem = get-wmiobject Win32_ComputerSystem -Computer $Computer
        $computerBIOS = get-wmiobject Win32_BIOS -Computer $Computer
        $Version = Get-WmiObject -Namespace "RootCIMv2" `
            -Query "Select * from Win32_ComputerSystemProduct" `
            -computer $computer | select -ExpandProperty version
        $MonitorInfo = gwmi WmiMonitorID -Namespace rootwmi `
            -computername $Computer `
            | Select PSComputerName, `
                @{n="Model";e={[System.Text.Encoding]::ASCII.GetString(`
                    $_.UserFriendlyName -ne 00)}},
                @{n="Serial Number";e={[System.Text.Encoding]::ASCII.GetString(`
                    $_.SerialNumberID -ne 00)}}     
    }
    catch
    {
        $Computer | Out-File -FilePath $NotRespondingLog -Append -Encoding UTF8
        continue
    }
    $Header = "System Information for: {0}" -f $computerSystem.Name
    # Outputting and logging header.
    write-host $Header -BackgroundColor DarkCyan
    $Header | Out-File -FilePath $OutputLog -Append -Encoding UTF8
    $Output = (@"
-------------------------------------------------------
Model          : {0} 
Serial Number  : {1} 
Version        : {2} 
Monitor Model  : {3}
Monitor Serial : {4}
-------------------------------------------------------
"@) -f $computerSystem.Model, $computerBIOS.SerialNumber, $Version, `
       $MonitorInfo.Model, $MonitorInfo."Serial Number"
    # Ouputting and logging WMI data
    Write-Host $Output
    $Output | Out-File -FilePath $OutputLog -Append -Encoding UTF8
}

最新更新