2016-07-07 3 views
-2

Как вставить мой 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 ,,, синтаксис для запуска Admin и этот, не объясняет, что происходит в "". Не смотря вперед, создавая интерфейс для этого.

Это не работает:

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 

Что мне не хватает?

+2

Вам необходимо объединить переменную 'SCRIPT_PATH' с строкой. Что-то вроде 'objShell.Run 'RUNAS/user: Dom \ adm" "powershell" & SCRIPT_PATH & "" "" '. – Lankymart

+1

Спасибо, что это сработало. Полезно знать о будущем. –

+2

как для IDE, рассмотрите VBSEdit. – Dave

ответ

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 & "\""""" 
+0

У вас есть пробел после '/ user:' и звездочки в конкатенации ('a & *" '). Оба не должны быть там. –

+0

Это было лишнее пространство после«/user »* Я пытался сделать bold)). Спасибо –

+0

Привет, как я могу запустить его молча, добавив ', 0' в' SCRIPT_PATH & "\" "" "", 0' не работает. Извиняюсь за то, что может быть глупым вопросом, этот синтаксис мне очень незначите. –