powershell - 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”等吗?
解决方案
它会是if ($ABSystem1.name -match $pattern2)
等等。你拼错了“系统”。
推荐阅读
- c++ - 包含头文件或cpp文件
- java - 如何在 Spring Boot 中验证服务类中的有效负载
- javascript - 如何正确等待 vue.js 中获取的数据以便在另一种方法中正确使用
- macos - 如何使用自制软件将 chromedriver 更新到 MacOS 上的最新版本?
- php - 如何使表格行内容中断行?
- java - 将 Google Drive 文件夹创建到另一个文件夹时出错
- c++ - 如何在内存中使用二进制数据创建 std::ofstream 文件而不将其写入存储?
- windows - CMake 和 Visual Studio:无法运行 MSBuild.exe
- excel - 填充文本框vba
- assembly - 在 JWasm 中禁用本地标签