Powershell IF语句-如何传递“ -match”或“ -like”

时间:2019-12-05 17:37:16

标签: powershell if-statement

我正在致力于安装软件的自动化。我当前正在执行的步骤是执行.msi文件,或者将目录解压缩并将其移动到适当的位置以进行部署。我正在尝试使用IF语句来完成此操作,但是,如果我的IF或ElseIF参数为true,它似乎仍然传递给“ 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参数错误吗?传递变量时可以使用“-匹配”“-喜欢”等吗?

1 个答案:

答案 0 :(得分:1)

应该是if ($ABSystem1.name -match $pattern2)等。您拼写了“ system”。