denkis
Goto Top

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

Content-Key: 262057

Url: https://administrator.de/contentid/262057

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: emeriks
emeriks 02.02.2015 um 21:37:29 Uhr
Goto Top
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

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.
Mitglied: denkis
denkis 02.02.2015 um 21:49:03 Uhr
Goto Top
Hallo E.

Danke. Habe ich sofort probiert, bzw. in den letzten Tagen auch schon. Funktioniert leider nicht.
Script wird gestartet aber Parameter bleiben unberücksichtigt.

denkis
Mitglied: 114757
Lösung 114757 02.02.2015 aktualisiert um 22:45:01 Uhr
Goto Top
ObjShell.Run "cscript C:\windows\system32\cscript.exe
Das ist aber doppelt gemoppelt face-wink 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  
Gruß jodel32
Mitglied: denkis
denkis 02.02.2015 um 22:17:05 Uhr
Goto Top
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.
Gruß
denkis
Mitglied: 114757
114757 02.02.2015 aktualisiert um 22:26:45 Uhr
Goto Top
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.
Mitglied: denkis
denkis 02.02.2015 um 22:47:11 Uhr
Goto Top
Hallo jodel32,

mit Deinen Ergänzungen hat es jetzt funktioniert. Ich habe das Ergebnis zweimal infolge repliziert.
Vielen Dank.

denkis
Mitglied: emeriks
emeriks 03.02.2015 um 08:22:27 Uhr
Goto Top
Ich habe das Ergebnis zweimal infolge repliziert.
Wohin?
Du meinst sicher "reproduziert". face-wink

E.
Mitglied: ThePinky777
ThePinky777 14.03.2023 aktualisiert um 16:15:03 Uhr
Goto Top
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 face-smile

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.