本地目录中的Test-Path

时间:2017-10-17 12:55:05

标签: powershell

考虑这个简单的路径验证:

if ((Test-Path $_) -and ($_ -like "*.msi")) {
    $true
    }

else {
    Throw "Specify correct path to installer." 
    }

通过路径时,例如"C:\Scripts\installer.msi"验证按预期工作。

但是当在与安装程序相同的目录中执行时,将此参数作为路径传递:.\Installer.msi

验证仍为True但会破坏安装程序。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

假设您正在使用msiexec.exe来运行此安装程序,您必须将完整路径传递给该msi文件才能使其正常工作。

所以你可能会这样叫msiexec:

msiexec /i $_

什么时候真的必须这样做:

msiexec /i "$((Get-Item $_).FullName)"

您可能还想查看MSI PowerShell module。它使得在PowerShell中使用msi文件更好一些。