在外部命令

时间:2016-07-07 13:46:18

标签: vbscript

如何将SCRIPT_PATH变量插入PowerShell脚本路径?还有谁知道任何Visual Studio Like工具我可以写那些?我认为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.ps1SCRIPT_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

我错过了什么?

1 个答案:

答案 0 :(得分: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 & "\"""""