我必须将其转换为Powershell:
On Error Resume Next
strComputer = "."
Set WshShell = CreateObject("WScript.Shell")
Set oEnv = WshShell.Environment("Process")
sScriptPath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - (Len(WScript.ScriptName) + 1))
WshShell.run "MsiExec.exe /i " & Chr(34) & sScriptPath & "\Install.msi" & chr(34) & " Transforms=" & chr(34) & sScriptPath & "\Install.mst" & chr(34),0 , True
WScript.Quit(0)
我所知道的:
On Error Resume Next
是Powershell中的默认值
Set WshShell = CreateObject("WScript.Shell")
就像是
$WshShell = New-Object -ComObject Wscript.Shell -Strict
我可以做吗
$oEnv = $WshShell.Environment("Process")
WScrip.ScriptFullName是完整路径还是当前脚本?
如何在Powershell中调用该WshShell.run命令?
答案 0 :(得分:1)
在PowerShell中,您通常只需使用
$env:VARIABLE
而不是像
那样令人费解的东西$oEnv = (New-Object -COM WScript.Shell).Environment('Process')
$oEnv.Item('VARIABLE')
如果您需要专门从" User"," Machine"或" Process"获取变量。环境你使用这样的东西:
[Environment]::GetEnvironmentVariable('VARIABLE', 'User')
相当于WScript.ScriptFullName
的{{3}}(或更新版本中的$PSScriptRoot
)。
您使用$MyInvocation.MyCommand.Path
(Run
)代替&
方法。