3

以下のスクリプトは、 で提供する各コンピューターから、製造元、モデル、シリアル番号、およびオペレーティング システムを正常に取得しますhostnames.txt。ただし、各コンピューターの WMI に 3 回接続する必要があるため、速度が低下します。

$OS = Get-WmiObject Win32_OperatingSystem -ComputerName $Computer
$CS = Get-WmiObject Win32_ComputerSystem -ComputerName $Computer
$BIOS = Get-WmiObject Win32_Bios -ComputerName $Computer

PowerShell を使用して、リモート コンピューターの WMI に一度接続し、同じ接続を使用して 3 つのクエリを実行するにはどうすればよいですか?

$Array = @() ## Create Array to hold the Data
$Computers = Get-Content -Path .\hostnames.txt

foreach ($Computer in $Computers)
{

    $Result = "" | Select HostPS,Mfg,Model,Serial,OS

    $Result.HostPS = $Computer
    $ErrorActionPreference = "SilentlyContinue" ## Don't output errors for offline computers
    $OS = Get-WmiObject Win32_OperatingSystem -ComputerName $Computer

    $CS = Get-WmiObject Win32_ComputerSystem -ComputerName $Computer

    $BIOS = Get-WmiObject Win32_Bios -ComputerName $Computer
    $ErrorActionPreference = "Continue"

    $Result.Mfg = $CS.Manufacturer
    $Result.Model = $CS.Model
    $Result.Serial = $BIOS.SerialNumber
    $Result.OS = $OS.Caption

    $Array += $Result ## Add the data to the array
}

$Array | Export-Csv file.csv -NoTypeInformation
4

2 に答える 2