关于powershell,我是一个新手。我想创建一个小脚本来节省很多时间,经过一番研究,我相信可以使用Import-CSV命令来实现。
基本上,我需要在多台PC上运行命令,但是每个命令的变量都不同。我希望从CSV文件的比较中提取该变量。因此,找到当前主机名,然后使用该主机名在CSV中找到相应的资产编号,然后在最终命令中将该资产编号用作变量。
看看这里的其他示例,到目前为止,我已经掌握了
$Asset = @()
$Host = @()
Import-Csv -Path "C:\hostnametoasset.csv" |`
ForEach-Object {
$Asset += $_.Asset
$Host += $_.Host
}
$Hostname = (Get-WmiObject -Class Win32_ComputerSystem -Property Name).Name
if ($Host -contains $Hostname)
{
C:\BiosConfigUtility64.exe /setvalue:"Asset Tracking Number","$Asset"
}
CSV部分:
Asset,Host
10756,PCD001
10324,PCD002
10620,PCD003
任何帮助将不胜感激。
答案 0 :(得分:2)
不同点的结合... 导入CSV会生成一系列可以过滤的对象。
$Lines = Import-Csv -Path "C:\hostnametoasset.csv"
$Line = $Lines | ?{$_.host -match $ENV:COMPUTERNAME}
然后您可以通过访问所需的成员直接使用过滤器结果。
C:\BiosConfigUtility64.exe /setvalue:"Asset Tracking Number","$($Line.Asset)"
注意:我现在无法直接对此进行测试,因此希望语法正确。