2013-12-09 91 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]