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

Printed on: April 19, 2024 at 18:04 o'clock

Member: emeriks
emeriks Feb 02, 2015 at 20:37:29 (UTC)
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.
Member: denkis
denkis Feb 02, 2015 at 20:49:03 (UTC)
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
Solution 114757 Feb 02, 2015 updated at 21:45:01 (UTC)
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
Member: denkis
denkis Feb 02, 2015 at 21:17:05 (UTC)
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 Feb 02, 2015 updated at 21:26:45 (UTC)
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.
Member: denkis
denkis Feb 02, 2015 at 21:47:11 (UTC)
Goto Top
Hallo jodel32,

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

denkis
Member: emeriks
emeriks Feb 03, 2015 at 07:22:27 (UTC)
Goto Top
Ich habe das Ergebnis zweimal infolge repliziert.
Wohin?
Du meinst sicher "reproduziert". face-wink

E.
Member: ThePinky777
ThePinky777 Mar 14, 2023 updated at 15:15:03 (UTC)
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.