【问题标题】:Powershell - Change variables based on CSV filePowershell - 根据 CSV 文件更改变量
【发布时间】:2013-12-26 23:19:24
【问题描述】:

我正在尝试使用 CSV 文件通过 powershell 自动命名计算机。我们的计算机名称带有通用型号,可以告诉我计算机的实际类型。例如,型号 #2537CU1 是联想 T410。我想拉取型号并将变量更改为T410。

我已经可以通过对计算机系统类的 get-wmiobject 调用来获取型号,但是要使用“类型”数据创建一个变量,例如 T410,我必须使用一堆 If 和 elseif 语句。这是由于我们支持的绝对数量或型号/类型。我的目标是编辑 CSV 而不是脚本本身。我只想让相应的模型为机器的“类​​型”获取正确的变量。

所以这是我的头到目前为止的地方,我知道我已经走了:

$model = Get-WmiObject -Class Win32_ComputerSystem | select -ExpandProperty Model
$modelCSV = "0"
$typeCSV = "0"
Import-Csv -Path "C:\TechDiv\ComputerModel_Type.csv" |
ForEach-Object {
    $modelCSV += $_.Model
    $typeCSV += $_.Type
    }
if ($modelCSV -like $model)
   {
        $model = $typeCSV
    }

我的 CSV 文件如下所示:

Model, Type
0401B7U, A70Z
0401R6U, A70Z
1165A3U, A70Z
25521H8, 0E31
2552Ck1, 0E31
7360, 0M58
7483, 0M58
7630, 0M58

最终我的电脑命名脚本会将型号和序列号连接起来,以便于收集和更新。型号/序列号示例(0 填充左侧序列号以填充 10 个空格):T410000R84D06Z

【问题讨论】:

    标签: variables powershell csv wmi


    【解决方案1】:

    我会这样做:

    $model = Get-WmiObject -Class Win32_ComputerSystem | select -ExpandProperty Model
    $modelCSV = "0"
    $typeCSV = "0"
    $modelList = Import-Csv -Path "C:\TechDiv\ComputerModel_Type.csv" |
    $modelName = $modelList | Where-Object{$_.Model -eq $model}
    

    【讨论】:

    • 如何翻译 WMI 调用带来的“模型”并从 CSV 更改为“类型”。类型是我真正想要的。例如,WMI 调用给了我 3257CU1(模型)。我想让它把我的变量翻译成 T410(类型)。
    • 我使用了您的 Where-Object 行并走得更远,因为我需要遇到“类型”信息。在下面的答案中发布代码,因为回复不能有代码 sn-ps。
    • $model = Get-WmiObject -Class Win32_ComputerSystem |选择 -ExpandProperty 模型 $modelType = Import-Csv -Path "C:\TechDiv\ComputerModel_Type.csv" | Where-Object {$_.Model -eq $model} |选择 -ExpandProperty 类型
    【解决方案2】:

    我会将该 CSV 加载到哈希表中:

    $ModelHash = @{}
    Import-Csv -Path "C:\TechDiv\ComputerModel_Type.csv" |
    ForEach-Object { $ModelHash[$_.Model = $_.Type }
    
    $model = Get-WmiObject -Class Win32_ComputerSystem | select -ExpandProperty Model
    
    $Type = $ModelHash[$Model]
    

    【讨论】:

      猜你喜欢
      • 2020-01-02
      • 2021-12-17
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多