webForumDet fria alternativet

Varför låser mitt Vbs skript mitt domänkonto?

.NET

0 svar · 342 visningar · startad av mattiasnordin

Medlem sedan maj 20012 080 inlägg
Frågan#1

Hej igen.
Har nu slipat ytterligare på ett skript som avmonterar några enheter för att sedan återmontera dessa. Allt fungerar när jag kör skriptet en gång. När jag sedan startar om datorn och loggar in så säger windows XP:

Could not reconnect all network drives...

Om man sedan öppnar filhanteraren och klicka på en av de nyligen uppmappade drive mappningarna så får man upp en ruta där det står:

The referenced account is currently locked out and may not be logged on to...

Kontrollerar man ovan på domänkontrollanten så stämmer det att kontot är låst.

Jag tolkar det som att efter en omstart så försöker windows återansluta varje drive mappning fast med ett felaktigt användarnamn/lösenord. I och med att jag har lika många mappningar som tillåtna felaktiga inloggningar så antar jag att det är dessa som låser kontot.

Vad har ni för ideer?

Nedan är mitt skript:


'*********************************************************************
' Author: Mattias Nordin
' 
' Version: 1.1 Date: 2005-07-22,	Fixade bForce=true för att ta bort befintliga shares. 
'									Lade till en skrivare och sätter den som default.
' Version: 1.0 Date: 2005-07-21
' Platform: Windows 2000/XP
' Language: VBScript
'**********************************************************************

On Error Resume Next

varInputUserName = InputBox("DETTA SKRIPT KOMMER ATT MONTERA NYA DRIVE MAPPNINGAR MOT IARSYSTEMS DOMÄNEN (behöver enbart köras av NT4\IAR användare)" _
&vbcrlf &vbcrlf &"Skriv in användarnamnet som du har i IARSYSTEMS domänen (ex: mattias.nordin)")

varInputUserName = "IARSYSTEMS\" &varInputUserName
varInputUserPassword = InputBox("Skriv lösenordet på kontot i den nya IARSYSTEMS domänen")
	
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set objDrives = WshNetwork.EnumNetworkDrives

bForce = true			'Tvingar en drive letter att stängas ner fastän den är öppen.
bUpdateProfile = true	'Raderar mappningens auto connect från profilen.

For i = 0 to objDrives.Count - 1 Step 2
	'  WScript.Echo "Drive " & objDrives.Item(i) & " = " & objDrives.Item(i+1)
	
	'TESTAR OM DEN GAMLA MAPPNINGEN EXISTERAR
	if objDrives.Item(i) = "O:" then
	WScript.Echo ("O finns redan. Försöker att ta bort nuvarande O:")
	WshNetwork.RemoveNetworkDrive "O:", bUpdateProfile, bForce 'Tar bort nuvarande O:
	end if 

	if objDrives.Item(i) = "P:" then
	WScript.Echo ("P finns redan. Försöker att ta bort nuvarande P:" &vbcrlf &"Kommer ersättas med \\A\public")
	WshNetwork.RemoveNetworkDrive "P:", bUpdateProfile, bForce 'Tar bort nuvarande P:
	end if 

	if objDrives.Item(i) = "Q:" then
	WScript.Echo ("Q finns redan. Försöker att ta bort nuvarande Q:" &vbcrlf &"Kommer ersättas med \\A\company")
	WshNetwork.RemoveNetworkDrive "Q:", bUpdateProfile, bForce 'Tar bort nuvarande Q:
	end if 
	
	if objDrives.Item(i) = "R:" then
	WScript.Echo ("R finns redan. Försöker att ta bort nuvarande R:" &vbcrlf &"Kommer ersättas med \\dev1\R_share")
	WshNetwork.RemoveNetworkDrive "R:", bUpdateProfile, bForce 'Tar bort nuvarande R:
	end if 

	if objDrives.Item(i) = "Y:" then
	WScript.Echo ("Y finns redan. Försöker att ta bort nuvarande Y:" &vbcrlf &"Kommer ersättas med \\dev1\Y_share")
	WshNetwork.RemoveNetworkDrive "Y:", bUpdateProfile, bForce 'Tar bort nuvarande Y:
	end if 

	if objDrives.Item(i) = "X:" then
	WScript.Echo ("X finns redan. Försöker att ta bort nuvarande X:" &vbcrlf &"Kommer ersättas med \\dev1\X_share")
	WshNetwork.RemoveNetworkDrive "X:", bUpdateProfile, bForce 'Tar bort nuvarande X:
	end if 

Next
'	WScript.Echo varInputUserName
'	WScript.Echo varInputUserPassword	
'	varDriveLetter = "U:"
'	varRemotePath = "\\rosa\CD"
'	strRemoteUser = "mattiasn"
'	varRemotePassword = "000000"
	varUpdateProfile = true 
&varInputUserName
'	WshNetwork.MapNetworkDrive "O:", varRemotePath, varUpdateProfile, varInputUserName, varInputUserPassword 
	WshNetwork.MapNetworkDrive "P:", "\\A", varUpdateProfile, varInputUserName, varInputUserPassword 
	WshNetwork.MapNetworkDrive "Q:", "\\A", varUpdateProfile, varInputUserName, varInputUserPassword 
	WshNetwork.MapNetworkDrive "R:", "\\dev1\R_share", varUpdateProfile, varInputUserName, varInputUserPassword 
	WshNetwork.MapNetworkDrive "Y:", "\\dev1\Y_share", varUpdateProfile, varInputUserName, varInputUserPassword 
	WshNetwork.MapNetworkDrive "X:", "\\A\novell_rom", varUpdateProfile, varInputUserName, varInputUserPassword 

'SKRIVER UT FELMEDDELANDE
numerr = Err.number
abouterr = Err.description
If numerr <> 0 Then
  WScript.Echo "Något gick snett vid skapandet av nya drive letter mappings. / M" 
  
else 
	WScript.Echo "NYA enheter är nu uppmappade i filhanteraren. Verifiera det för att vara säker. " &vbcrlf &vbcrlf  &"Öppnar nu filhanteraren..."
	Set objShell = CreateObject("WScript.Shell")
	objShell.run ("Explorer")
End If 

'KÄNDA ERROR CODES
' -2147022694 - Fileshare manuellt uppmappad och kan ej tas bort ????
' -2147022492 - The device is in use by an active process and cannot be disconnected ????

'RADERAR FELMEDDELANDE
Err.Clear

'====================== Installerar skrivare =====================

WScript.Echo "Då IAR användare (i vissa fall?) inte har rättigheter att skriva ut på IARSYSTEMS skrivarna så installerar skriptet " &vbcrlf &" en skrivare kallad 'iar_domain on rosa'. Denna sätts till default."  &vbcrlf &vbcrlf &"Skrivaren står borta hos utvecklarna :)"

'LÄGG HÄR TILL SKRIVARNA SOM SKA INSTALLERAS 		 
varUncPrintersToInstallArray = array("\\rosa\iar_domain")

'VILKEN SKRIVARE SKA VARA DEFAULT SKRIVARE? NOTERA ATT DEFAULT SKRIVAREN ÄVEN MÅSTE FINNAS MED OVAN.
varUncDefaultPrinter = "\\rosa\iar_domain"  

Dim objNetwork, strUNCPrinter

'SKAPAR ETT OBJEKT
Set objNetwork = CreateObject("WScript.Network") 

'LOOPAR IGENOM ALLA LOKALT INSTALLERADE SKRIVARE
Set oPrinters = objNetwork.EnumPrinterConnections
'WScript.Echo "Network printer mappings:"
	For i = 0 to oPrinters.Count - 1 Step 2
		 '  WScript.Echo "Port " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1)
		varAllLocallyInstalledPrinters = varAllLocallyInstalledPrinters &oPrinters.Item(i+1) &" ; " 'SPARAR ALLA PRINTRAR I EN STRÄNG
	Next

'SÄTTER ALLA TECKEN TILL GEMENER
varAllLocallyInstalledPrinters = lcase(varAllLocallyInstalledPrinters)

'TESTAR OM SKRIVARE REDAN ÄR INSTALLERAD. OM EJ INSTALLERAS DESSA.
varNumberOfInstalledPrinters = 0
For i = 0 to ubound(varUncPrintersToInstallArray)
	varMatchFound = inStr(varAllLocallyInstalledPrinters, lcase(varUncPrintersToInstallArray(i)))
	if varMatchFound > 0 then																		'Om skrivaren redan finns installerad 
    	 'WScript.Echo "SKIPPING: Printer '" &varUncPrintersToInstallArray(i) &"' all ready installed. "
		varNumberOfSkippedPrinters = varNumberOfSkippedPrinters +1 
	else
	    'WScript.Echo "INSTALLING PRINTER = " &varUncPrintersToInstallArray(i)						'Ger information om varje skrivare som installeras
		objNetwork.AddWindowsPrinterConnection varUncPrintersToInstallArray(i)						'Kommandot som faktiskt installerar skrivaren.
		varNumberOfInstalledPrinters = varNumberOfInstalledPrinters + 1 							'Räknar hur många skrivare som har installerats
		varNewInstalledPrinters = varNewInstalledPrinters &varUncPrintersToInstallArray(i) &vbcrlf	'Dokumenterar vilka skrivare som installerats
	end if
next

'SÄTTER DEFAULT SKRIVARE OM DEN INTE REDAN FINNS
if inStr(varAllLocallyInstalledPrinters, varUncDefaultPrinter) = 0 then 	'Kontrollerar om defaultskrivaren finns installerad
	objNetwork.SetDefaultPrinter varUncDefaultPrinter
	varChangedDefaultPrinterTo = "New default printer is set to: " _		
	&vbcrlf	&vbcrlf	&varUncDefaultPrinter									'Skapar statusmeddelande
else 
	varChangedDefaultPrinterTo = "Default printer has not changed."			'Skapar alternativ statusmeddelande
end if

'SKRIVER UT STATUS
if varNumberOfInstalledPrinters > 0 then 
	WScript.Echo "Installed " &varNumberOfInstalledPrinters  &" new printer(s): " &vbcrlf  &vbcrlf &varNewInstalledPrinters _
	&vbcrlf  &vbcrlf &vbcrlf &varChangedDefaultPrinterTo
elseif varNumberOfSkippedPrinters > 0 then
	'WScript.Echo "Number of skipped (all ready installed) printers = " &varNumberOfSkippedPrinters		'Skriver ut en lista över skrivare som skippades
end if

numerr = Err.number
abouterr = Err.description
If numerr <> 0 Then
  'WScript.Echo "TROLIGEN FEL NAMN PÅ EN AV SKRIVARNA. ÖVRIGA SKRIVARE ÄR INSTALLERADE OK. // MATTIAS " &vbcrlf  &" ... Error number " &numerr &vbcrlf &varInstalledString
End If
270 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)