VB-Script in VB-Script starten und Parameter übergeben
Hallo liebe Scriptgemeinde,
ich muss mehrere Rechner für den Übergang in eine neue Domäne vorbereiten. Dafür sind drei wesentliche Schritte definiert worden:
1. lokale Drucker und verbundene Netzwerkdrucker löschen
2. lokal konfigurierte Netzwerk Druckerports löschen
3. Name des PCs ändern
Mit dem Buch "Windows Scripting lernen" und verschiedenen Forumsschnipseln habe ich für dieses Szenario ein Script zusammengebastelt. Schritt zwei und drei funktionieren auch reibungslos.
Für Schritt eins bediene ich mich bei den Windows Boardmitteln - den Printing_Admin_Scripts, die ich in meinem Script aufrufe. Im Scriptverlauf startet er zwar den "prnmngr.vbs", beachtet jedoch keine Schalter bzw. angehängte Parameter.
In der Commandline starte ich diese Scripte mit [cscript %Pfad%\prnmngr.vbs -xc -xo -x]
-xc trennt Netzwerkdrucker
-xo löscht lokal installierte Drucker
-x löscht den Rest bzw. alle Drucker
Scriptausschnitt
'Dieses Skript löscht alle Drucker einschl. lokaler Netzwerkports und Treiber, und ändert den Namen des PCs
'==========================================================================================================
'Berechtigungen setzen
'=======================================================================================
If WScript.Arguments.length =0 Then
Set objShell = CreateObject("Shell.Application")
'Pass a bogus argument with leading blank space, say [ uac]
objShell.ShellExecute "wscript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
'Warnung
'=======================================================================================
If MsgBox ("Dieses Script löscht alle Drucker einschließlich lokal konfigurierter Netzwerkdruckerports und zugehöriger Treiber, sofern möglich. Zudem ändert es den Namen des Gerätes unter Verwendung der Seriennummer. Dieser Vorgang lässt sich zwischendurch nicht beenden! Möchten Sie damit fortfahren?", _
vbYesNo + vbDefaultButton2 + vbExclamation, "Warnung") = vbNo Then
WScript.Quit
End If
'Variablen
'=======================================================================================
Dim Path1, Path2, Path3, Path4, Path5, Path6, Path7, Path8
Dim ValueDevice, ValueStrich, ValueName
Dim WSHShell, ObjShell, wmiobj
Dim KeyPath
Dim objReg
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_DYN_DATA = &H80000006
Const COMPUTER = "."
'Objekteinführung
'=======================================================================================
Set WSHShell = CreateObject("WScript.Shell")
Set ObjShell = WScript.CreateObject("WScript.Shell")
Set objReg = GetObject("winmgmts:\\" & COMPUTER & "\root\default:StdRegProv")
Set wmiobj = GetObject("winmgmts://localhost/root/cimv2:Win32_BIOS")
'Drucker und Treiber löschen
'=======================================================================================
On Error Resume Next
ObjShell.Run "cscript C:\windows\system32\cscript.exe C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -xc -xo -x"
ObjShell.Run "cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -x"
'Registry Eintrag löschen
'=======================================================================================
....
Scriptausschnitt Ende
Wie bekomme ich es hin, dass die Parameter -x -xc und -xo berücksichtigt werden?
denkis
ich muss mehrere Rechner für den Übergang in eine neue Domäne vorbereiten. Dafür sind drei wesentliche Schritte definiert worden:
1. lokale Drucker und verbundene Netzwerkdrucker löschen
2. lokal konfigurierte Netzwerk Druckerports löschen
3. Name des PCs ändern
Mit dem Buch "Windows Scripting lernen" und verschiedenen Forumsschnipseln habe ich für dieses Szenario ein Script zusammengebastelt. Schritt zwei und drei funktionieren auch reibungslos.
Für Schritt eins bediene ich mich bei den Windows Boardmitteln - den Printing_Admin_Scripts, die ich in meinem Script aufrufe. Im Scriptverlauf startet er zwar den "prnmngr.vbs", beachtet jedoch keine Schalter bzw. angehängte Parameter.
In der Commandline starte ich diese Scripte mit [cscript %Pfad%\prnmngr.vbs -xc -xo -x]
-xc trennt Netzwerkdrucker
-xo löscht lokal installierte Drucker
-x löscht den Rest bzw. alle Drucker
Scriptausschnitt
'Dieses Skript löscht alle Drucker einschl. lokaler Netzwerkports und Treiber, und ändert den Namen des PCs
'==========================================================================================================
'Berechtigungen setzen
'=======================================================================================
If WScript.Arguments.length =0 Then
Set objShell = CreateObject("Shell.Application")
'Pass a bogus argument with leading blank space, say [ uac]
objShell.ShellExecute "wscript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
'Warnung
'=======================================================================================
If MsgBox ("Dieses Script löscht alle Drucker einschließlich lokal konfigurierter Netzwerkdruckerports und zugehöriger Treiber, sofern möglich. Zudem ändert es den Namen des Gerätes unter Verwendung der Seriennummer. Dieser Vorgang lässt sich zwischendurch nicht beenden! Möchten Sie damit fortfahren?", _
vbYesNo + vbDefaultButton2 + vbExclamation, "Warnung") = vbNo Then
WScript.Quit
End If
'Variablen
'=======================================================================================
Dim Path1, Path2, Path3, Path4, Path5, Path6, Path7, Path8
Dim ValueDevice, ValueStrich, ValueName
Dim WSHShell, ObjShell, wmiobj
Dim KeyPath
Dim objReg
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_DYN_DATA = &H80000006
Const COMPUTER = "."
'Objekteinführung
'=======================================================================================
Set WSHShell = CreateObject("WScript.Shell")
Set ObjShell = WScript.CreateObject("WScript.Shell")
Set objReg = GetObject("winmgmts:\\" & COMPUTER & "\root\default:StdRegProv")
Set wmiobj = GetObject("winmgmts://localhost/root/cimv2:Win32_BIOS")
'Drucker und Treiber löschen
'=======================================================================================
On Error Resume Next
ObjShell.Run "cscript C:\windows\system32\cscript.exe C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -xc -xo -x"
ObjShell.Run "cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -x"
'Registry Eintrag löschen
'=======================================================================================
....
Scriptausschnitt Ende
Wie bekomme ich es hin, dass die Parameter -x -xc und -xo berücksichtigt werden?
denkis
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 262057
Url: https://administrator.de/forum/vb-script-in-vb-script-starten-und-parameter-uebergeben-262057.html
Ausgedruckt am: 22.12.2024 um 15:12 Uhr
8 Kommentare
Neuester Kommentar
Hi,
Code Tag benutzen!
Ich glaube, die x-Parameter schließen sich gegenseitig aus. Man kann immer nur einen von denen angeben. Bzw. nur "-x" löscht sowie so alle Drucker. "xc" und "xo" ist dann jeweils eine Einschränkung.
Also
E.
Code Tag benutzen!
Ich glaube, die x-Parameter schließen sich gegenseitig aus. Man kann immer nur einen von denen angeben. Bzw. nur "-x" löscht sowie so alle Drucker. "xc" und "xo" ist dann jeweils eine Einschränkung.
Also
ObjShell.Run "cscript C:\windows\system32\cscript.exe C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -x"
ObjShell.Run "cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -x"
E.
ObjShell.Run "cscript C:\windows\system32\cscript.exe
Das ist aber doppelt gemoppelt mit dem cscript ... und ein paar Parameter fehlen.ObjShell.Run "cscript.exe ""C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs"" -xc -xo -x",0,true
ObjShell.Run "cscript.exe ""C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs"" -x",0,true
Zitat von @denkis:
vielen Dank @114757.
leider werden auch hier die Parameter nicht berücksichtigt, egal ob ich nur Einen oder alle Drei setze. Ich bin auch schon
ratlos, weil ich schon einiges probiert habe.
geht hier einwandfrei ... hatte oben noch die Parameter für die Run-Funktion ergänzt damit für jeden Befehl gewartet wird bis er abgeschlossen ist, die 0 besagt unsichtbar ausführen.vielen Dank @114757.
leider werden auch hier die Parameter nicht berücksichtigt, egal ob ich nur Einen oder alle Drei setze. Ich bin auch schon
ratlos, weil ich schon einiges probiert habe.
Ergänzung noch von mir
"cscript.exe ""C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs"" -xc -xo -x"
Man kann das auch so machen:
"cscript.exe " & """" & "C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs" & """" & " -xc -xo -x"
Bedeutet die Zeichen so:
"xyz" sind ein String
das """" entspricht einem Anführungszeichen, falls man mal in Dateinamen leerzeichen drin hat
"cscript.exe " & """" & "C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs" & """" & " -xc -xo -x"
würde also Real so aussehen:
cscript.exe "C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs" -xc -xo -x
unter DOS
vielleicht bingts ja was
einfach mal ausgeben lassen mit
wscript.echo "cscript.exe " & """" & "C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs" & """" & " -xc -xo -x"
dann wisst ihr was ich meine.
"cscript.exe ""C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs"" -xc -xo -x"
Man kann das auch so machen:
"cscript.exe " & """" & "C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs" & """" & " -xc -xo -x"
Bedeutet die Zeichen so:
"xyz" sind ein String
das """" entspricht einem Anführungszeichen, falls man mal in Dateinamen leerzeichen drin hat
"cscript.exe " & """" & "C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs" & """" & " -xc -xo -x"
würde also Real so aussehen:
cscript.exe "C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs" -xc -xo -x
unter DOS
vielleicht bingts ja was
einfach mal ausgeben lassen mit
wscript.echo "cscript.exe " & """" & "C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs" & """" & " -xc -xo -x"
dann wisst ihr was ich meine.