有人可以解释为什么会有效:
$cred = Get-Credential
Start-Process -FilePath "msiexec.exe" -ArgumentList "/i `"C:\temp\jre1.7.0_17.msi`"" -Credential $cred -wait
但这不是:
$cred = Get-Credential
Start-Process -FilePath "msiexec.exe" -ArgumentList "/i `"C:\temp\jre1.7.0_17.msi`" ""`/qn REBOOT=ReallySuppress JAVAUPDATE=0 WEBSTARTICON=0 SYSTRAY=0`" ""/log c:\temp\javainst.log" -Credential $cred -wait
答案 0 :(得分:0)
我首先要担心的是你逃避每个特殊角色的方式。如果做得好,它会正常工作,但这里似乎没必要。如果需要在字符串中包含双引号,则将参数打包在单引号中。
您可以尝试以下操作,看看它是否有帮助?
$cred = Get-Credential
Start-Process -FilePath "msiexec.exe" -ArgumentList '/i "C:\temp\jre1.7.0_17.msi" /qn REBOOT=ReallySuppress JAVAUPDATE=0 WEBSTARTICON=0 SYSTRAY=0 /log c:\temp\javainst.log' -Credential $cred -wait
另外,正如我在您之前非常相似的帖子中所评论的那样,您能解释为什么需要使用msiexec
而不是java自己的exe设置吗?
编辑试试这个:
$cred = Get-Credential
Start-Process -FilePath "c:\temp\jre-7u17-windows-i586.exe" -ArgumentList '/S /L c:\temp\javainst.log REBOOT=ReallySuppress JAVAUPDATE=0 WEBSTARTICON=0 SYSTRAY=0' -Credential $cred -wait