将此代码段从VBS转换为Powershell

时间:2016-07-29 08:24:22

标签: powershell vbscript

我必须将其转换为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命令?

1 个答案:

答案 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.PathRun)代替&方法。