Powershell 本地目录中的测试路径
考虑以下简单的路径验证:Powershell 本地目录中的测试路径,powershell,Powershell,考虑以下简单的路径验证: if ((Test-Path $_) -and ($_ -like "*.msi")) { $true } else { Throw "Specify correct path to installer." } 当传递路径(例如“C:\Scripts\installer.msi”时,验证将按预期工作 但是当在与安装程序相同的目录中执行时,将此参数作为路径传递:\installer.msi 验证仍然是True,但会中断安装程序 如何修
if ((Test-Path $_) -and ($_ -like "*.msi")) {
$true
}
else {
Throw "Specify correct path to installer."
}
当传递路径(例如“C:\Scripts\installer.msi”
时,验证将按预期工作
但是当在与安装程序相同的目录中执行时,将此参数作为路径传递:\installer.msi
验证仍然是True
,但会中断安装程序
如何修复此问题?假设您正在使用msiexec.exe运行此安装程序,则必须传递该msi文件的完整路径才能使其正常工作 因此,您可能会这样调用msiexec:
msiexec /i $_
当你真的需要这样做的时候:
msiexec /i "$((Get-Item $_).FullName)"
你可能还想调查这个问题。它使在PowerShell中使用msi文件变得更好。假设您正在使用msiexec.exe运行此安装程序,则必须传递该msi文件的完整路径才能使其工作 因此,您可能会这样调用msiexec:
msiexec /i $_
当你真的需要这样做的时候:
msiexec /i "$((Get-Item $_).FullName)"
你可能还想调查这个问题。在PowerShell中使用msi文件会更好。什么叫“破坏安装程序”?除非您在某个地方更改工作目录,否则无论您指定MSI的绝对路径还是相对路径都无关紧要。它是如何破坏安装程序的?您是否隐藏了一些试图以某种方式执行安装程序的代码?如果在.\Installer.msi上返回true,则脚本的工作方式与您的完全相同。什么是“中断安装程序”?除非您在某个地方更改工作目录,否则无论您指定MSI的绝对路径还是相对路径都无关紧要。它是如何破坏安装程序的?您是否隐藏了一些试图以某种方式执行安装程序的代码?如果在.\Installer.msi上返回true,则脚本的工作方式与您的完全相同。