2013-12-09 86 views
1

我正在尝试使用CSV文件进行PowerShell自动计算机命名。我们的计算机名称带有一般型号,它告诉我计算机的实际类型。例如,型号#2537CU1是联想T410。我想拉动型号并将变量更改为T410。Powershell - 基于CSV文件更改变量

我已经可以通过调用计算机系统类的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

回答

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} 
+0

如何翻译WMI调用带来的“模型”并将其更改为CSV中的“类型”。类型是我真正想要的。所以WMI调用给我例如3257CU1(模型)。我希望将我的变量转换为T410(类型)。 – LiquidCourage11

+0

因为我需要“类型”信息,所以我使用了你的Where-Object行并进一步了解。由于回复不能包含代码片段,因此在下面的答案中发布代码。 – LiquidCourage11

+0

$ model = Get-WmiObject -Class Win32_ComputerSystem |选择-ExpandProperty Model $ modelType = Import-Csv -Path“C:\ TechDiv \ ComputerModel_Type.csv”| Where-Object {$ _。Model -eq $ model} |选择-ExpandProperty类型 – LiquidCourage11

0

我加载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]