powershell 使用 CSV 创建变量
powershell use CSV to create variables
说到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
如有任何帮助,我们将不胜感激。
几个不同点...
导入 CSV 会生成一个对象数组,您可以根据这些对象进行过滤。
$Lines = Import-Csv -Path "C:\hostnametoasset.csv"
$Line = $Lines | ?{$_.host -match $ENV:COMPUTERNAME}
然后您可以通过访问您需要的成员直接使用筛选结果。
C:\BiosConfigUtility64.exe /setvalue:"Asset Tracking Number","$($Line.Asset)"
注意:我现在无法直接测试它,所以希望我的语法正确。
说到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
如有任何帮助,我们将不胜感激。
几个不同点... 导入 CSV 会生成一个对象数组,您可以根据这些对象进行过滤。
$Lines = Import-Csv -Path "C:\hostnametoasset.csv"
$Line = $Lines | ?{$_.host -match $ENV:COMPUTERNAME}
然后您可以通过访问您需要的成员直接使用筛选结果。
C:\BiosConfigUtility64.exe /setvalue:"Asset Tracking Number","$($Line.Asset)"
注意:我现在无法直接测试它,所以希望我的语法正确。