Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VB-Script in VB-Script starten und Parameter übergeben

Frage Entwicklung VB for Applications

Mitglied: denkis

denkis (Level 1) - Jetzt verbinden

02.02.2015, aktualisiert 22:45 Uhr, 1177 Aufrufe, 7 Kommentare

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

01.
ObjShell.Run "cscript C:\windows\system32\cscript.exe C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -x" 
02.
ObjShell.Run "cscript C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs -x"
E.
Bitte warten ..
Mitglied: denkis
02.02.2015 um 21:49 Uhr
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
Bitte warten ..
Mitglied: 114757
LÖSUNG 02.02.2015, aktualisiert um 22:45 Uhr
ObjShell.Run "cscript C:\windows\system32\cscript.exe
Das ist aber doppelt gemoppelt mit dem cscript ... und ein paar Parameter fehlen.
01.
ObjShell.Run "cscript.exe ""C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs"" -xc -xo -x",0,true 
02.
ObjShell.Run "cscript.exe ""C:\Windows\System32\Printing_Admin_Scripts\de-DE\prndrvr.vbs"" -x",0,true
Gruß jodel32
Bitte warten ..
Mitglied: denkis
02.02.2015 um 22:17 Uhr
vielen Dank @jodel32.
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
Bitte warten ..
Mitglied: 114757
02.02.2015, aktualisiert um 22:26 Uhr
Zitat von denkis:

vielen Dank @jodel32.
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.
Bitte warten ..
Mitglied: denkis
02.02.2015 um 22:47 Uhr
Hallo jodel32,

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

denkis
Bitte warten ..
Mitglied: emeriks
03.02.2015 um 08:22 Uhr
Ich habe das Ergebnis zweimal infolge repliziert.
Wohin?
Du meinst sicher "reproduziert".

E.
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

Windows Server
gelöst Eventlog gesperrtes Konto, Konto als Parameter übergeben (10)

Frage von pablovic zum Thema Windows Server ...

VB for Applications
gelöst VB Script rekursiv statt nur ein Ordner (4)

Frage von Saschaaaaa zum Thema VB for Applications ...

VB for Applications
gelöst VB Script nach gefundenem Wort die nächsten 4 Zeichen ersetzten (2)

Frage von deutsch73 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...