Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables Powershell-基于CSV文件更改变量_Variables_Powershell_Csv_Wmi - Fatal编程技术网

Variables Powershell-基于CSV文件更改变量

Variables Powershell-基于CSV文件更改变量,variables,powershell,csv,wmi,Variables,Powershell,Csv,Wmi,我正在尝试使用CSV文件使用powershell自动命名计算机。我们的计算机名带有通用型号,它告诉我计算机的实际类型。例如,2537CU1型是联想T410。我想提取型号并将变量更改为T410 我已经可以通过对computersystem类的get wmiobject调用获得模型号,但是要创建一个带有类型数据的变量,比如T410,我必须使用一组If和elseif语句。这完全是由于我们支持的数量或型号/类型。我的目标是有一个CSV来编辑,而不是脚本本身。我只想让相应的模型得到适合机器类型的正确变量

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

我已经可以通过对computersystem类的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

$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}

我会这样做:

$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}

我会将该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]

我会将该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]

如何转换WMI调用带来的模型并从CSV更改为类型。这种类型正是我真正想要的。例如,WMI调用为我提供了3257CU1模型。我想把我的变量转换成T410类型。我使用了你的Where对象行,因为我需要类型信息。在下面的回答中发布代码,因为答复不能有代码片段。$model=Get wmioobject-Class Win32_ComputerSystem | select-ExpandProperty model$modelType=Import Csv-Path C:\TechDiv\ComputerModel_Type.Csv | Where Object{$\uu.model-eq$model}|选择-ExpandProperty类型如何转换WMI调用带来的模型并从CSV更改为类型。这种类型正是我真正想要的。例如,WMI调用为我提供了3257CU1模型。我想把我的变量转换成T410类型。我使用了你的Where对象行,因为我需要类型信息。在下面的回答中发布代码,因为答复不能有代码片段。$model=Get wmioobject-Class Win32_ComputerSystem | select-ExpandProperty model$modelType=Import Csv-Path C:\TechDiv\ComputerModel_Type.Csv | Where Object{$u.model-eq$model}| select-ExpandProperty Type