首页 > 解决方案 > Powershell IF 语句 - 如何传递“-match”或“-like”

问题描述

我正在研究安装软件的自动化。我目前正在执行的步骤是执行 .msi 文件,或者解压缩并将目录移动到适当的位置以进行部署。我正在尝试使用 IF 语句来完成此操作,但是,如果我的 IF 或 ElseIF 参数为真,它似乎仍会传递到“Else”语句。我的例子如下:

$pattern2 = "abc"
$pattern3 = "Dot NET ABC"
$pattern4 = "ABC Serial Example"
$path2 = "C:Users\$env:UserName\Downloads\" 
$ABSystem1 = Get-ChildItem -path $path2 | Where-Object {$_.Name -Match $pattern2}
$ABSystem2 = Get-ChildItem -path $path2 | Where-Object {$_.Name -Match $pattern3}
$ABSystem3 = Get-ChildItem -path $path2 | Where-Object {$_.Name -Match $pattern4}
$Destination2 = "C:Test\test-systems\$ClientName\ab\$ClientName\"
$InstallAB = {if ($ABSyetem1 -Match $pattern2 ) {
    $ABName1 = $ABsystem1.Name
    Expand-Archive -LiteralPath "C:\Users\$env:UserName\Downloads\$AbName1" -DestinationPath $Destination2
}
elseif ($ABSyetem2 -Match $pattern3) {
    $ABName2 = $ABSystem2.Name
    Start-Process "C:\users\$env:UserName\downloads\$ABName2"
}
else {
    $ABName3 = $ABSystem3.Name
    Start-Process "C:\users\$env:UserName\downloads\$ABName3"
}}

基本上,使用它的个人将下载三个版本之一。根据下载的内容,它将匹配名称并执行关联的 .msi,或展开 zip 存档以进行部署。

我是否传递了我的 IF 参数错误?传入变量时可以使用“-Match”“-Like”等吗?

标签: powershellif-statement

解决方案


它会是if ($ABSystem1.name -match $pattern2)等等。你拼错了“系统”。


推荐阅读