Talning á útstöðvum

Til að skoða hve margar útstöðvar eru í umhverfinu getur verið þægilegt að nota Active Roles skelina frá Quest (Dell). Almennt finnst mér betra að nota bara PowerShell sem kemur með Windows til að þurfa ekki að setja upp nein forrit á vélum aukalega. Hins vegar eru Active Roles mjög þægilegt að mörgu leyti þar sem búið er að gera ráð fyrir hlutum og þarf ekki alltaf að skrifa langar skipanir til að ná þeim upplýsingum sem maður þarf.

Aðferðin sem ég nota til að finna útstöðvar er að nota –OSName rofann á Get-QADComputer skipuninni. Þá er líka hægt að velja þau stýrikerfi sem maður vill skoða eða telja. Skipunin lítur þá þannig út:

Get-QADComputer -ComputerRole member -SizeLimit 0 –LdapFilter '(!(userAccountControl:1.2.840.113556.1.4.803:=2))' -OSName 'Windows XP*', 'Windows 2000*', 'Windows 8*', 'Windows 7*', 'Windows Vista*'

Hér er þá listaðar upp öll computer object sem eru með þau stýrikerfi sem listuð eru upp á eftir –OSName rofanum. En það getur verið betra að fá bara töluna á því hve margar þessar vélar eru og þá er ágætt að nota ().count til þess:

(Get-QADComputer -ComputerRole member -SizeLimit 0 –LdapFilter '(!(userAccountControl:1.2.840.113556.1.4.803:=2))' -OSName 'Windows XP*', 'Windows 2000*', 'Windows 8*', 'Windows 7*', 'Windows Vista*').count

Hérna fyrir ofan setti ég líka inn userAccountControl sem skoðar hvort útstöðvar eru virka eða ekki. Í tilfellinu hér fyrir ofan fáum við upplýsingar um virkar vélar en til að fá lista yfir óvirkar vélar þarf að eyða út upphrópunarmerkinu fyrir framan userAccountControl þannig að sú skipun yrði þá þannig:

(Get-QADComputer -ComputerRole member -SizeLimit 0 –LdapFilter '((userAccountControl:1.2.840.113556.1.4.803:=2))' -OSName 'Windows XP*', 'Windows 2000*', 'Windows 8*', 'Windows 7*', 'Windows Vista*').count

En vélar geta líka verið virkar þó þær hafi ekki verið notaðar í langan tíma og haf þá ekki loggað sig inn í einhvern tíma. Í því tilfelli er mjög gott að nota Active Roles til að skoða þetta þar sem bæði er hægt að nota rofann –InactiveFor og –NotLoggedOnFor til að skoða þetta. Með þessum rofum getum við skoðað vélar sem hafa verið í ákveðinni stöðu í ákveðinn tíma. Það er rofi í Get-QADComputer skipuninni sem heitir einfaldlega –Inactive og hann listar upp vélar sem hafa verið óvirkar í tiltekinn tíma. Hægt er að sjá skilgreininguna á því með skipuninni Get-QADInactiveAccountsPolicy (og hægt að breyta þessari skilgreiningu með Set). Rofinn –InactiveFor er þá notaður til að skoða vélar sem hafa verið Inactive samkvæmt skilgreiningunni í tiltekinn tíma. Dæmi um þessa skipun væri:

Get-QADComputer -InactiveFor 30

Með þessari skipun fáum við lista af vélum sem hafa verið í Inactive stöðu í 30 daga.

Hinn rofinn (NoteLoggedOnFor) notast aftur á móti við LastLogonTimeStamp pararmeterinn í Active Directory. Þessar upplýsingar eru samkeyrðar á 9-14 daga fresti á milli lénastjóra og því ætti ekki að nota færri en 14 daga sem dagafjölda í skipuninni.

Í báðum tilfellum mætti auðvitað skilgreina stýrikerfi og hvort vélar séu virkar eða ekki. Til að t.d. skoða allar útstöðvar sem ekki eru óvirkar en hafa ekki loggað sig inn í 180 daga mætti nota eftirfarandi skipun:

(Get-QADComputer -ComputerRole member -SizeLimit 0 -NotLoggedOnFor 180 –LdapFilter '(!(userAccountControl:1.2.840.113556.1.4.803:=2))' -OSName 'Windows XP*', 'Windows 2000*', 'Windows 8*', 'Windows 7*', 'Windows Vista*').count 

Viðbætur:
Auðvitað má nota PowerShell án þess að þurfa að setja upp þessi Quest tól. Hef reyndar verið að reka mig á mismunandi niðurstöður efti aðferðum. En til að nota “venjulegt” PowerShell til að finna eldri útstöðvar sem ekki eru lengur í notkun er hægt að notast við eitthvað í þessa átt:

$old = (Get-Date).AddDays(-60)
Get-ADComputer -Filter {PasswordLastSet -le $old} -Properties * 

Skipunin byrjar á því að sækja dagsetninguna í dag og draga frá henni 60 daga til að fá eldri dagsetningu.

Hér er reyndar ekki verið að undanskilja disable útstöðvar né heldur verið að tilgreina nöfn á stýrikerfum. Það má auðvitað bæta því við á sambærilegan hátt og áður. Hins vegar hefur það reynst mér best að keyra svona scriptu á OU sem á bara að innihalda virkar vélar og þá eingöngu útstöðvar. Það má gera einhvern veginn svona:

$old = (Get-Date).AddDays(-60)
Get-ADComputer -Filter {PasswordLastSet -le $old} -Properties * -SearchScope Subtree -SearchBase "OU=Workstations,DC=domain,DC=net"

Til að taka þetta saman þá væri hægt að setja ForEach lúppu til að sækja t.d. bara nöfnin á útstöðvunum.

$old = (Get-Date).AddDays(-60)
$oldComputers = Get-ADComputer -Filter {PasswordLastSet -le $old} -Properties * -SearchScope Subtree -SearchBase "OU=Workstations,DC=domain,DC=net"
   ForEach ($oldComputer in $oldComputers) {
	# Select the computer(s)
	$computername = $oldComputer.name 
	$computername
   }
This entry was posted in Active Directory, Active Roles, PowerShell and tagged , , . Bookmark the permalink.

Leave a comment