我在学习Powershell的同时使用这个网站。到目前为止,这是一个很好的帮助!
这是我的问题:
我正在尝试编写一个脚本,该脚本将获取工作站名称,从WMI中提取工作站描述,将工作站名称和描述输出到新的.csv文件。
这是我到目前为止所做的:
Get-Content -Path "workstation_names.csv" | Select-Object Workstations |
Foreach-Object { Get-WmiObject -Class Win32_OperatingSystem -ComputerName $workstations | Select Workstations, Description | Export-CSV -Path "results.csv" -NoTypeInformation }
workstation_names.csv
有一个名为“工作站”的列,在其下面,每个单元格中都有一个工作站名称。目前我的脚本将创建一个输出文件,其中包含两列。一个称为“工作站”,另一个称为“描述”。 Workstation列为空,Description列仅包含其中第一个工作站描述的结果(即使我在workstation_names.csv
文件中列出了10个工作站名称)。
我坐在这里,用我对Powershell的非常了解的方式摸不着头脑。我知道我可能需要使用从第一个.csv
文件创建的数组,但我不知道如何编码我需要的代码。任何帮助?
答案 0 :(得分:1)
可能这样的事情应该可以解决问题:
$inFile = "workstation_names.csv"
$results = @()
Import-CSV -path $inFile -header Workstations |
% {$results += Get-WmiObject -Class Win32_OperatingSystem `
-ComputerName $_.Workstations | Select PSComputerName, Description}
$results | Export-Csv -Path "results.csv" -NoTypeInformation
所以要详细说明,你并没有真正导入CSV,而是导入原始文本文件,这很令人困惑,因为在这种情况下,我真的不明白有什么方法可以帮助你。此处脚本将创建一个数组来存储结果,将文件导入为CSV,循环显示贵重物品并将结果输出到CSV。
答案 1 :(得分:0)
4c74356b41的脚本会因多种原因失败
-header
not -headers $_
select Workstations
无效,因为gwmi没有属性这只是稍微重写过的脚本应该这样做。
$inFile = "workstation_names.csv"
$results = @()
Import-CSV -path $inFile -header Workstations |
% {$results += Get-WmiObject -Class Win32_OperatingSystem `
-ComputerName $_.Workstations | Select PSComputerName, Description}
$results | Export-Csv -Path "results.csv" -NoTypeInformation
要查看哪些属性可用,请参阅以下输出
GWmi -Class Win32_OperatingSystem -ComputerName localhost|gm|out-gridview