簡體   English   中英

如何使用計算機列表正確調用Get-WmiObject的變量

[英]How to properly call a variable for Get-WmiObject using a list of computers

我正在嘗試確定如何使用計算機列表正確調用Get-WmiObject的變量。

無論我做什么,我都無法使用此代碼。

我花了幾個小時檢查代碼來編譯我的代碼,感覺我90%在那里,但無法通過這最后一件小事。 我也是Powershell的新手,但我正在嘗試我的屁股

$comp = Import-CSV .\testlist.csv 

foreach $comp{



    $cs = Get-CimInstance -ClassName Win32_ComputerSystem -ComputerName $comp
    $bios = Get-CimInstance -ClassName Win32_BIOS -ComputerName $comp
    $tpm = Get-WmiObject -Namespace root\cimv2\security\microsofttpm -Class Win32_Tpm -computername $comp -Authentication PacketPrivacy
    $cos = Get-CimInstance -ClassName Win32_OperatingSystem -computername $comp | select-object Caption, BuildNumber, OSArchitecture

    $properties = [ordered]@{
        'ComputerName' = $comp;
        'Model' = $cs.Model;
        'Operating System' = $cos.Caption
        'OS build' = $cos.BuildNumber
        'OS Type' = $cos.OSArchitecture
        'BIOSVersion' = $bios.SMBIOSBIOSVersion
        'TPM ManufacturerId' = $tpm.ManufacturerId
        'TPM Firmware version' = $tpm.ManufacturerVersion
        'TPM SpecVersion' = $tpm.SpecVersion
        )


}| Export-Csv -Path .\Result.csv -NoTypeInformation

錯誤信息:

New Text Document.ps1:4 char:8 + foreach $ comp {+〜Missing opening'('after keyword'foreach'。

New Text Document.ps1:4 char:14 + foreach $ comp {+〜表達式或語句中的意外標記'{'。

New Text Document.ps1:22 char:39 +'TPM SpecVersion'= $ tpm.SpecVersion +〜哈希文字不完整。

新文本Document.ps1:4 char:14 + foreach $ comp {+〜在語句塊或類型定義中缺少結束'}'。

表達式或語句中的新文本Document.ps1:23 char:3 +)+〜意外的標記')'。

New Text Document.ps1:26 char:1 +} | 在表達式或語句中導出-Csv -Path。\\ Result.csv -NoTypeInformation +〜意外的標記'}'。

New Text Document.ps1:26 char:2 +} | Export-Csv -Path。\\ Result.csv -NoTypeInformation +〜

不允許使用空管道元素。 + CategoryInfo:ParserError:(:) [],ParentContainsErrorRecordException + FullyQualifiedErrorId:MissingOpenParenthesisAfterKeyword

我改變了一些基本的東西:

  • ForEach :如果你不使用(),你可以使用Foreach-Object遍歷$ comp:

$comp | ForEach-Object { write-host "computername: $_ "} $comp | ForEach-Object { write-host "computername: $_ "}

  • ; 在行尾:)

  • 管道每個元素以導出csv並使用-append (您正在管道最終結果)

  • 我更喜歡使用convertTo-csv | out-file somefile.csv convertTo-csv | out-file somefile.csv Export-csv也是這樣做的,但在輸出上應用了一些有時會產生意外結果的過濾器

foreach ($c in $comp) {
            $cs = Get-CimInstance -ClassName Win32_ComputerSystem -ComputerName $c
            $bios = Get-CimInstance -ClassName Win32_BIOS -ComputerName $c
            $tpm = Get-WmiObject -Namespace root\cimv2\security\microsofttpm -Class Win32_Tpm -computername $c -Authentication PacketPrivacy
            $cos = Get-CimInstance -ClassName Win32_OperatingSystem -computername $c | select-object Caption, BuildNumber, OSArchitecture    
        $properties = [ordered]@{
            'ComputerName'         = $c
            'Model'                = $cs.Model
            'Operating System'     = $cos.Caption
            'OS build'             = $cos.BuildNumber
            'OS Type'              = $cos.OSArchitecture
            'BIOSVersion'          = $bios.SMBIOSBIOSVersion
            'TPM ManufacturerId'   = $tpm.ManufacturerId
            'TPM Firmware version' = $tpm.ManufacturerVersion
            'TPM SpecVersion'      = $tpm.SpecVersion
        }  | 
        Export-Csv -Path .\Result.csv -NoTypeInformation
}

之后} | 有一個反向刻度字符(`)告訴powershell該行被分成兩行。 它弄亂了格式化,所以我刪除它,不要忘記把它放回去。

暫無
暫無

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

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