Powershell Switch-Statement 不改变值
Powershell Switch-Statement doesn't change value
这是我写的Powershell脚本:
$varCompList = Get-ADComputer -Filter "Name -like '*Name of Computers*'" -Properties OperatingSystemVersion | select DNSHostName, OperatingSystemVersion
foreach ($System in $varCompList){
$Restult=switch ($System.OperatingSystemVersion){
"10.0 (20348)"{"Server 2022"}
"10.0 (19042)"{"Server 2019 20H2"}
"10.0 (18363)"{"Server 2019 1909"}
"10.0 (17763)"{"Server 2019 1809"}
"10.0 (14393)"{"Server 2016"}
}
}
echo $varCompList
它显示所有服务器,但 OperatingSystemVersion
仍显示为 10.0 (14393).
我错过了什么?
您当前正在将映射的 OS 名称分配给变量,但您从未将其用于任何用途,也从未更新原始输入对象。
不是将结果分配给变量,而是将其分配给每个对象上的 OperatingSystemVersion
属性:
foreach ($System in $varCompList){
$System.OperatingSystemVersion = switch ($System.OperatingSystemVersion){
"10.0 (20348)"{"Server 2022"}
"10.0 (19042)"{"Server 2019 20H2"}
"10.0 (18363)"{"Server 2019 1909"}
"10.0 (17763)"{"Server 2019 1809"}
"10.0 (14393)"{"Server 2016"}
default { $_ }
}
}
default
案例将确保您为未安装任何列出的版本的任何计算机保留原始版本字符串。
这是我写的Powershell脚本:
$varCompList = Get-ADComputer -Filter "Name -like '*Name of Computers*'" -Properties OperatingSystemVersion | select DNSHostName, OperatingSystemVersion
foreach ($System in $varCompList){
$Restult=switch ($System.OperatingSystemVersion){
"10.0 (20348)"{"Server 2022"}
"10.0 (19042)"{"Server 2019 20H2"}
"10.0 (18363)"{"Server 2019 1909"}
"10.0 (17763)"{"Server 2019 1809"}
"10.0 (14393)"{"Server 2016"}
}
}
echo $varCompList
它显示所有服务器,但 OperatingSystemVersion
仍显示为 10.0 (14393).
我错过了什么?
您当前正在将映射的 OS 名称分配给变量,但您从未将其用于任何用途,也从未更新原始输入对象。
不是将结果分配给变量,而是将其分配给每个对象上的 OperatingSystemVersion
属性:
foreach ($System in $varCompList){
$System.OperatingSystemVersion = switch ($System.OperatingSystemVersion){
"10.0 (20348)"{"Server 2022"}
"10.0 (19042)"{"Server 2019 20H2"}
"10.0 (18363)"{"Server 2019 1909"}
"10.0 (17763)"{"Server 2019 1809"}
"10.0 (14393)"{"Server 2016"}
default { $_ }
}
}
default
案例将确保您为未安装任何列出的版本的任何计算机保留原始版本字符串。