[英]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.