gpt4 book ai didi

powershell - powershell IF 与 Switch

转载 作者:行者123 更新时间:2023-12-02 22:56:14 25 4
gpt4 key购买 nike

当检索计算机的操作系统时,根据我使用的是 if 语句还是开关,我得到不同的结果:

if (((Get-WmiObject -ComputerName DT-04 Win32_OperatingSystem).Caption.ToString()) -match "Microsoft Windows 7 Professional") { "Found" } Else { "Not found" } 

结果 = 找到

switch ((Get-WmiObject -ComputerName DT-04 Win32_OperatingSystem).Caption.ToString()) { "Microsoft Windows 7 Professional" { "Found" } Default { "Not Found" } }

结果 = 未找到

为什么会这样?

最佳答案

这不是 ifswitch 的区别;它是正在使用的运算符。在您的 if 中,您使用的是 -match 但默认情况下 switch 使用的是 -eq

通过使用 -match,您可以进行正则表达式匹配,这将在源字符串的任何位置找到该字符串。 -eq 不会。它们都应该不区分大小写。

您可以修改 switch 以使用正则表达式或通配符匹配:

switch -regex ((Get-WmiObject -ComputerName DT-04 Win32_OperatingSystem).Caption.ToString()) 
{
"Microsoft Windows 7 Professional" { "Found" }
Default { "Not Found" }
}

或:

switch -wildcard ((Get-WmiObject -ComputerName DT-04 Win32_OperatingSystem).Caption.ToString()) 
{
"*Microsoft Windows 7 Professional*" { "Found" }
Default { "Not Found" }
}

或者,找出您的字符串不完全匹配的原因并更改文字。你走哪条路取决于你的情况。

如果您不打算使用正则表达式,我会小心处理正则表达式匹配,因为很容易无意中使用特殊字符或使您的正则表达式无效。

关于powershell - powershell IF 与 Switch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41064998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com