考虑这个简单的路径验证:
if ((Test-Path $_) -and ($_ -like "*.msi")) {
$true
}
else {
Throw "Specify correct path to installer."
}
通过路径时,例如"C:\Scripts\installer.msi"
验证按预期工作。
但是当在与安装程序相同的目录中执行时,将此参数作为路径传递:.\Installer.msi
验证仍为True
但会破坏安装程序。
我该如何解决这个问题?
答案 0 :(得分:2)
假设您正在使用msiexec.exe来运行此安装程序,您必须将完整路径传递给该msi文件才能使其正常工作。
所以你可能会这样叫msiexec:
msiexec /i $_
什么时候真的必须这样做:
msiexec /i "$((Get-Item $_).FullName)"
您可能还想查看MSI PowerShell module。它使得在PowerShell中使用msi文件更好一些。