首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将此代码片段从VBS转换为Powershell

将此代码片段从VBS转换为Powershell
EN

Stack Overflow用户
提问于 2016-07-29 16:24:22
回答 1查看 397关注 0票数 0

我必须将其转换为Powershell:

代码语言:javascript
运行
复制
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)

我所知道的:

代码语言:javascript
运行
复制
On Error Resume Next

是Powershell中的默认设置

代码语言:javascript
运行
复制
Set WshShell = CreateObject("WScript.Shell")

是这样的

代码语言:javascript
运行
复制
$WshShell = New-Object -ComObject Wscript.Shell -Strict

我可以这样做吗?

代码语言:javascript
运行
复制
$oEnv = $WshShell.Environment("Process")

完整路径或当前脚本的WScrip.ScriptFullName是什么?

如何在Powershell中调用WshShell.run命令?

EN

回答 1

Stack Overflow用户

发布于 2016-07-29 18:22:37

在PowerShell中,您通常只需使用

代码语言:javascript
运行
复制
$env:VARIABLE

而不是像这样复杂的东西

代码语言:javascript
运行
复制
$oEnv = (New-Object -COM WScript.Shell).Environment('Process')
$oEnv.Item('VARIABLE')

如果需要专门从"User“、"Machine”或"Process“环境中获取变量,可以使用如下代码:

代码语言:javascript
运行
复制
[Environment]::GetEnvironmentVariable('VARIABLE', 'User')

WScript.ScriptFullName等效的是$MyInvocation.MyCommand.Path (或在较新版本中为$PSScriptRoot )。

您可以使用call operator (&)代替Run方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38653989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档