【问题标题】:Build path and use in external command构建路径并在外部命令中使用
【发布时间】:2016-07-07 13:46:17
【问题描述】:

如何将我的 SCRIPT_PATH 变量插入 PowerShell 脚本路径?也有人知道我可以编写任何类似 Visual Studio 的工具吗?我认为 Visual Studio 使用不同的 .net vbs。

代码如下:

SCRIPT_PATH = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - (Len(WScript.ScriptName)))
MsgBox SCRIPT_PATH
Set objShell = CreateObject("WScript.Shell")
objShell.Run "RUNAS  /user:Domain\User ""powershell SCRIPT_PATH & Delete_App_Script.ps1"""
Set objShell = Nothing

SCRIPT_PATH = SCRIPT_PATH + Delete_App_Script.ps1 怎么办? SCRIPT_PATH = SCRIPT_PATH & "Delete_App_Script.ps1" 不起作用。 它没有错误,所以我不确定是什么问题。 我错过了一些"" 或一些,, 吗?

我已经看到一些 .Run ,,, 用于管理员运行的语法,而这个并没有解释 "" 的内容。 不期待为此创建界面。

这不起作用:

Set objShell = CreateObject("WScript.Shell")
SCRIPT_PATH = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - (Len(WScript.ScriptName)))
SCRIPT_PATH = SCRIPT_PATH & "Delete_App_Script.ps1"    
objShell.Run "RUNAS  /user:Dom\adm ""powershell SCRIPT_PATH"""
Set objShell = Nothing

但这有效:

Set objShell = CreateObject("WScript.Shell")
objShell.Run "RUNAS  /user:Dom\adm ""powershell C:\Delete_App_Script.ps1"""
Set objShell = Nothing

我错过了什么?

【问题讨论】:

  • 您必须将变量SCRIPT_PATH 连接到字符串。类似objShell.Run "RUNAS /user:Dom\adm ""powershell " & SCRIPT_PATH & """"。
  • 谢谢你成功了。很高兴知道未来。
  • 对于 IDE,考虑 VBSEdit。
  • 谢谢,现在速度更快了。

标签: vbscript


【解决方案1】:

在处理路径时使用适当的FileSystemObject 方法:

Set fso = CreateObject("Scripting.FileSystemObject")

SCRIPT_PATH = fso.GetParentFolderName(WScript.ScriptFullName)
SCRIPT_PATH = fso.BuildPath(SCRIPT_PATH, "Delete_App_Script.ps1")

如@Lankymart 所指出的,要在字符串中使用变量,您需要将变量连接到字符串的其余部分。这也记录在language tag info。

objShell.Run "RUNAS /user:Domain\User ""powershell " & SCRIPT_PATH & """"

还要注意,如果路径包含空格,您应该将路径放在双引号中:

objShell.Run "RUNAS /user:Domain\User ""powershell \""" & SCRIPT_PATH & "\"""""

您应该使用参数-File,否则PowerShell会将脚本路径解释为命令字符串,这对于带有空格的路径不会失败。

objShell.Run "RUNAS /user:Domain\User ""powershell -File \""" & SCRIPT_PATH & "\"""""

【讨论】:

  • /user: 后面有一个空格,并在连接中带有一个星号 (a &*")。两者都不应该存在。
  • 在“/user”之后是额外的空间*我试图做粗体))。谢谢
  • 您好,如何静默运行?将,0 添加到SCRIPT_PATH & "\""""", 0 不起作用。对于一个愚蠢的问题,我很抱歉,这种语法对我来说非常陌生。
  • 因为要切换用户上下文,所以不能静默运行。
  • 即使我做这样的事情? objShell.Run "RUNAS /user:ONE\" & User & " ""powershell -File \""" & SCRIPT_PATH & "\""""",0 WScript.Sleep 1000 objShell.SendKeys Pass 'send password objShell.SendKeys "{ENTER}" Set objShell = Nothing
猜你喜欢
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 2015-04-27
  • 1970-01-01
  • 2020-08-26
相关资源
最近更新 更多