2016-07-07 6 views
-2

Wie Einfügen meiner SCRIPT_PATH Variable in PowerShell-Skriptpfad? Auch jemand weiß Visual Studio Like-Tool kann ich diese schreiben? Ich denke Visual Studio verwendet verschiedene .net Vbs. HierErstellen Pfad und Verwendung in externen Befehl

ist der Code:

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 

Wie kann ich SCRIPT_PATH = SCRIPT_PATH + Delete_App_Script.ps1 tun? SCRIPT_PATH = SCRIPT_PATH & "Delete_App_Script.ps1" funktioniert nicht. Es gibt keine Fehler, so dass ich nicht sicher bin, was das Problem ist. Fehle ich einige "" oder einige ,,?

Ich habe einige .Run ,,, Syntax für Admin ausgeführt und diese, erklärt nicht, was in "" geht. Ich freue mich nicht, eine Schnittstelle dafür zu erstellen.

funktioniert das nicht:

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 

Aber das funktioniert:

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

Was bin ich?

+2

Sie müssen die Variable 'SCRIPT_PATH' mit der Zeichenfolge verketten. So etwas wie 'objShell.Run 'RUNAS/Benutzer: Dom \ adm" "Powershell" & SCRIPT_PATH & "" "" '. – Lankymart

+1

Vielen Dank, es hat funktioniert. Gut für die Zukunft zu wissen. –

+2

wie für eine IDE, betrachten Sie VBSEdit. – Dave

Antwort

1

die entsprechenden FileSystemObject Methoden verwenden, wenn Pfade Handhabung:

Set fso = CreateObject("Scripting.FileSystemObject") 

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

Für Variablen in Strings verwenden Sie die Variablen für den Rest des Strings verketten müssen, wie @Lankymart hingewiesen. Dies ist auch in der language tag info dokumentiert.

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

Beachten Sie auch, dass Sie den Pfad in doppelte Anführungszeichen, falls setzen sollte es Leerzeichen enthält:

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

und Sie sollten den Parameter -File, verwenden Sie sonst würde Powershell das Skript Pfad als Befehlsfolge interpretieren , die für Pfade mit Leerzeichen nicht fehlschlagen würde.

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

Sie haben ein Leerzeichen hinter '/ user:' und ein Sternchen in der Verkettung ('a & *" '). Beide sollten nicht da sein. –

+0

Es war extra Platz nach"/user "das * ich versuchte zu tun fett)) Danke –

+0

Hallo, wie laufe ich es still? Hinzufügen von ', 0' zu' SCRIPT_PATH & "\" "" ", 0' funktioniert nicht. Ich entschuldige mich für was eine dumme Frage sein könnte, Diese Syntax ist mir sehr unbekannt –

Verwandte Themen