Gå til innhold

Anbefalte innlegg

Skal begynne og jobb med en del automatisering på jobben i sommar. Og hadde tenkt og lage til noko script opp i mot AD (windows 2003 server). Det eg hadde tenkt til er at den sjekke opp i mot navn på pc-ar som ligge i AD foreksempel (kjøyre windows xp pro på pc-ane):

 

Viss det ligger nokon pc-ar som heiter: testpc001, testepc 002, testpc003 osv. So skal den klare og finne fram nærmeste navne som testpc04 og klare og gi den det navne.

 

Og so hadde eg tenkt og lage til ein script der den legge pc-en automatisk pc-en inn i domene etter den har fått rett navn.

 

Noken som har noken tips og kome med her eller noke linker til noken gode internett side med tips/guide til korleis en kan gjerde det?

Endret av Neddo
Lenke til kommentar
Videoannonse
Annonse

Hei

 

Du finner nok noen gode tips for å endre navn og legge inn i domene her:

http://www.google.co.uk/search?hl=en&e...ame&spell=1

 

Her er et script som finner det første ledige computername i AD:

 

 

'
' Script to change computerName to the first available name
'

' Declare the computerOU variable to apply to all of the script
strComputerOU = "OU=Workstations,dc=domiain,dc=no"

NewName = changeComputerName ()

Function changeComputerName ()
intMinDigits = 3
strPrefix = "testepc"
intStart = 1

strComputerName = strPrefix & PadDigits(intStart, 3)

'
' Find new computername
'

Do Until computerExists (strComputerName) = False
	intStart = intStart + 1
	strComputerName = strPrefix & PadDigits (intStart, 3)
Loop

strNewComputerName = strComputerName
WScript.Echo "New computerName: " & strNewComputerName
changeComputerName = strNewComputerName

End Function

Function PadDigits(n, totalDigits) 
If Len(n) < totalDigits Then
	PadDigits = Right(String(totalDigits,"0") & n, totalDigits) 
Else
	PadDigits = n
End If

End Function 

'
' Checks if a computer exists in a specified OU in AD
'
Function computerExists (strComputerName)
WScript.Echo "Checking " & strComputerName
strSQL = "SELECT distinguishedName FROM 'LDAP://" & strComputerOU & "' WHERE objectClass='computer' AND Name='" & strComputerName & "'"
Set objRS = getResultSet (strSQL)
WScript.Echo strComputerName & ": " & objRS.RecordCount
If objRS.RecordCount = 0 Then
	computerExists = False
Else
	computerExists = True 
End If

End Function

Function getResultSet (strQuery)
' Use ADO to search Active Directory.
Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 200
objCommand.Properties("Timeout") = 30
Set getResultSet = objCommand.Execute
End Function

 

 

Dette ka da brukes for å finne det nye navnet som pcen skal få.

Kan også brukes for å endre navn på en eksisterende pc.

 

Scriptet finner det første ubrukte navnet. F.eks. dersom du har hatt en pc som har hatt navnet testpc003, og har slettet denne fra AD, så vil dette bli det nye navnet, selv om testpc004. testpc005 osv... finnes...

 

(OBS: Scriptet er ikke veldig godt testet, bare litt kjapt)

Bare spør dersom du lurer på noe...

 

PS: For automatisering, så anbefaler jeg å ha en skikkelig utrulligs løsning, som f.eks. sccm, WDS eller lignende OS Deployment verktøy.

OGså kjører du scriptet som endrer navnet på pce nhelt til slutt. PAss da på at navnet som pc kotoen får først, er unikt, slik at det ikke finnes fra før i AD:

 

EDIT: Bare for å få det med: Scriptet har nok sikkert endel forbedrings potensiale.

/kakkle

Endret av kakkle
Lenke til kommentar

Husk å endre:

strComputerOU = "OU=Workstations,dc=domain,dc=no"

til det som er gjeldende for ditt domene...

 

Som standard, så brukes vel nye pcer å legges inn i computers...

Det vil da se sånn ut:

strComputerOU = "CN=Computers,dc=domain,dc=no"

 

Merk at den default container computers ikke er en OU, derav CN=computers

 

Om du trenger hjelp med å finne distiguishedName, så anbefaler jeg deg å bruke adsiedit, og se på verdien distinguishedName på et object (f.eks. en OU)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...