docusnap-dude
Goto Top

VBS-Logoutscript funktioniert nicht

mal wieder VBscript...

Hi,

kann mir jemand mal helfen, warum mein logout-Script nicht funktioniert? es sind immer noch alle network-Printer und Laufwerke online wenn es gelaufen ist:
Dim oDrives, fUser, fOS, fDomain, fUserName, oGroupDict
Dim objNetwork
Dim objFSO, objFileCopy
Dim strFilePath, strDestination

Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objNetwork = CreateObject("WScript.Network")  
Set WshNetwork = WScript.CreateObject("WScript.Network")  
Set WshShell = WScript.CreateObject("WScript.Shell")  
Set oDrives = WshNetwork.EnumNetworkDrives

UserName = (WshShell.ExpandEnvironmentStrings("%UserName%"))  
fUser = (WshNetwork.UserName)
Set WshShell = CreateObject("WScript.Shell")  

'### Check if you are connected in Plantoffice ###  
strComputer = "."  
Set objWMIService = GetObject("winmgmts:" & "!\\" & strComputer & "\root\cimv2" )  
Set colAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True" )  
For Each objAdapter in colAdapters
    IPdebut = LBound(objAdapter.IPAddress)
    IPfin = UBound(objAdapter.IPAddress)
	If InStr("#" & Join(objAdapter.IPAddress, "#"), "#10.211.") > 0 Then wscript.qui  

	'### Sequence remove UNC-Printers ###  
		on error resume next
			set oPrinters = WshNetwork.EnumPrinterConnections 
				For i = 1 To oPrinters.Count -1 Step 2 
					If InStr(oPrinters(i), "\\DC02PRT\") > 0 Then WshNetwork.RemovePrinterConnection(oPrinters(i))   
		Next

	'### Sequence remove UNC-Network Drives ###  
			Dim DelNetDrive
				Set WshNet = CreateObject("WScript.Network")  
					For DriveAsc = 102 To 122
			On Error Resume Next
				DelNetDrive = Chr(DriveAsc) & ":"  
					WshNet.RemoveNetworkDrive DelNetDrive, True, True
			Next

wscript.qui
Ziel ist also: lösche alle Netzwerkdrucker und Laufwerke bei logout...

Danke für Ideen!

Noch was: wie baue ich ein, das nur wenn der IP-Range mit 10.211. beginnt das script läuft?

Danke für eure Hilfe!

Frank

Content-Key: 151652

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

Printed on: May 7, 2024 at 16:05 o'clock

Mitglied: 76109
76109 Sep 23, 2010 at 15:42:48 (UTC)
Goto Top
Hallo frankoehli!

Mhm, irgendwie willenlos zusammenkopiert

Beim überfliegen Deines Skripts sind mir zunächst mal 2 Dinge aufgefallen:
1. WScript.Qui anstatt WScript.Quit
2. In Codezeile 40 fehlt passend zur Codezeile 20 (For Each) eine Next-Anweisung

Gruß Dieter
Member: DocuSnap-Dude
DocuSnap-Dude Sep 23, 2010 at 17:07:43 (UTC)
Goto Top
Ui; welch ein Lapsus; völlig übersehen:

1. WScript.Qui anstatt WScript.Quit

Aber:
2. In Codezeile 40 fehlt passend zur Codezeile 20 (For Each) eine Next-Anweisung
Steh ich grad auf dem Schlauch. Wie gesagt: bin VB-Anfänger. Warum noch mal fdie Abfrage neu staren in Zeile 40 (für was)?

Danke dir aber schon einmal!
Member: dog
dog Sep 23, 2010 at 21:57:44 (UTC)
Goto Top
For Each objAdapter in colAdapters
    IPdebut = LBound(objAdapter.IPAddress)
    IPfin = UBound(objAdapter.IPAddress)
	If InStr("#" & Join(objAdapter.IPAddress, "#"), "#10.211.") > 0 Then wscript.qui  

Die effektive Aussage dieses Codes ist:
Sobald eine der Netzwerkkarten, die WMI (zufällig) zurückliefert, den Array der IP-Adressen in "#10.211..." hat brich das Skript ab.

Ich zähle da allein schon 4 Fehler.

Und Netzwerkdrucker zu löschen ist mit WMI eine Sache von 4 Zeilen...
Member: DocuSnap-Dude
DocuSnap-Dude Sep 24, 2010 at 06:27:05 (UTC)
Goto Top
Und Netzwerkdrucker zu löschen ist mit WMI eine Sache von 4 Zeilen...

OK; Hast du mal praktisches Beispiel?
Member: dog
dog Sep 24, 2010 at 14:17:55 (UTC)
Goto Top
' WMI Provider - SWbemServices  
Set wmi = GetObject("winmgmts:\\.\root\cimv2")  
' Drucker - SWbemObjectSet  
set printerSet = wmi.ExecQuery("SELECT * FROM Win32_Printer WHERE Network = TRUE")  

On Error Resume Next

For Each printer In printerSet
	printer.Delete_
Next
Member: DocuSnap-Dude
DocuSnap-Dude Sep 24, 2010 at 18:38:32 (UTC)
Goto Top
Jepp; danke das funktioniert mit meinen Anpassungen jetzt!

Danke also!