Käyttämällä PowerShell arkistoon Postilaatikot PST perustuvat AD lastLogonTime Exchange 2007 ...

Andy Grogan 10. marraskuuta 2011 · 4 kommenttia

vuonna Exchange 2007 (Admin) , Exchange 2007 (General) , Exchange 2007 Backup , Exchange 2007 skriptejä , PowerShell

Vähän aikaa sitten törmäsin siisti pieni ilmainen työkalu PowerShell nimeltään Inactive Users Tracker PowerShell cmdlet niminen yhtiö NetWrix .
Tämä cmdlet pohjimmiltaan tarjotaan mukava, helppokäyttöinen kääre konsernin viimeisen kirjautumistiedot tilien Active Directory (koska saatat olla tietoinen lastlogon ominaisuutta ei monistaa 2003 ympäristöissä, ja se voi olla hieman vaikea keskimäärin käyttäen script ).

Olen alun perin alkanut käyttää NetWrix moduuli raportoinnista aktiivinen tilitiedot sisällä hakemistoon ympäristöissä, mutta mahdollisuudet, että sitä käytetään osana paljon laajempaa työkalu karsia, ja sulkea käyttämättömiä tilejä ja postilaatikoita oli selkeä - niin Tässä artikkelissa olen keksiä mallikomentotiedoston antaa sinulle ideoita siitä, miten voit automatisoida seuraavat prosessit käyttävät sitä:

  • Löytää tilit, joita ei ole kirjautuneena määrätyn ajan
  • Vie postilaatikot mainitessaan ne tilille PST
  • Poista postilaatikot
  • Poistaa Active Directory-tilin
  • Siirrä AD Tili tiettyyn OU

Valitettavasti NetWrix on nyt lopetettu tätä työkalua hyväksi GUI version, joka mielestäni voidaan ajoittaa komentoriviltä - mutta voit silti ladata versio, olen käyttäen mistä täältä josta Kehotan, että te niin kuin toiminnallisuus on todella siistiä .

Skripti itsessään on löyhästi perustuu artikkelissa, että olen julkaissut täällä elokuussa tämän vuoden (2011) - mutta laajentaa sen toimintoja.

Yksi asia, että minun on huomautettava, että tämä kirjoitus on näyte vain, eikä sitä pitäisi käyttää tuotannossa ilman muutoksia.
Jos aiot käyttää tätä script tuotantoympäristössä - sinun pitäisi tarkastella toteuttamiseen poikkeuksia vienti- ja poistaa käytöstä prosessi - kuten yleensä on olemassa useita postilaatikoita tuotannossa että nimellisarvo ole kirjautunut, mutta ne palvelevat tarkoitusta.

Lisäksi sinun pitäisi myös harkita lukuun tilejä, jos omistaja on pitkän aikavälin poissaolo.

Sanon on - käyttää omalla vastuulla!

Vaatimukset

Voidakseen käyttää tätä script sinun tulee olla seuraavat ennakkoedellytyksiä asennettu Exchange (tai Management Server):

Lataa

Käsikirjoitus on ladattavissa alla - tai voit kopioida sen tällä sivulla PS1 tiedoston Management / Exchange Server:

[ ExportMailboxesToPst-BasedonLogon.ps1 - 3KB ]

 # Vienti Postilaatikko PST, Poista postilaatikko, Active Directory-tilin ja Siirrä OU # Versio 1.0 # Kirjoittaja: Andy Grogan # HUOMAUTUS: Tämä skripti poistaa postilaatikon tilille kaupasta # # Add-PSSnapin Quest.ActiveRoles.ADManagement Add-PSSnapin NETWRIXIUTPSSnapIn Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin $ErrorActionPreference = "SilentlyContinue" #  Muuta seuraava sopivaksi requirements $gblInactiveDays = 50 $DestinationPSTPath = "X:\Psts" $ServiceAccount = "Administrator@ethan.local" function get-DNC { Param ( $RDSE ) $DomainDNC = $RDSE .defaultNamingContext Return $DomainDNC } $NC = (Get-DNC([ adsi ]( "LDAP://RootDSE" ))) $DisabledAccountOU = "OU=DisabledUsers," + $NC function apply_Permissions ( $strMailbox ){ Remove-MailboxPermission  -User $ServiceAccount -Deny -InheritanceType 'All' -AccessRights 'FullAccess' -Confirm : $false Add-MailboxPermission -Identity $ StrMailbox -Käyttäjän $ ServiceAccount -Deny -InheritanceType 'All' -AccessRights "FullAccess" -Tarkista: $ false Add-MailboxPermission -Identity $strMailbox -User $ServiceAccount -AccessRights 'FullAccess' -Confirm : $false } function remove_permissions ( $strMailbox ){ Remove-MailboxPermission -Identity $strMailbox -User $ServiceAccount -InheritanceType 'All' -AccessRights 'FullAccess' -Confirm : $false Add-MailboxPermission  -User $ServiceAccount -Deny -Identity $ StrMailbox -Käyttäjän $ ServiceAccount -Deny -AccessRights 'FullAccess' -Confirm : $false } function get_ADDomain (){ $strDomain = [ System.DirectoryServices.ActiveDirectory.Domain ]:: GetCurrentDomain (). Name return $strDomain } function disable_mailbox ( $strMailbox ){ Disable-Mailbox $strMailbox -Confirm : $false } function get-dn ( $SAMName ) { $root = [ ADSI ] '' $searcher = new-object System.DirectoryServices.DirectorySearcher ( $root ) $searcher .filter = "(&(objectClass=user)(sAMAccountName=  = $searcher .findall() if ( $user .count -gt 1) { $count = 0 foreach ( $i in $user ) { write-host $count ": " $i .path $count = $count + 1 } $selection = Read-Host "Please select item: " return $user [ $selection ].path } else { return $user [0].path } } function moveToDisabledOU ( $strDN ){ move-QADObject $ SAMName)) "$ user = $ etsijä .findall () Jos ($ user .count -gt 1) {$ count = 0 foreach ($ i $ user) {write-isäntä $ count": "$ i .path $ count = $ count + 1} $ valinta = Read-Host "Valitse kohta:" paluu $ user [$ valinta] .path} else {return $ user [0] .path}} toiminto moveToDisabledOU ($ strDN) {liikkua -QADObject -Identity $strDN -NewParentContainer $DisabledAccountOU } function get_InactiveAccounts (){ $Domain = get_ADDomain $Accounts = Get-NCInactiveUsers -domain $Domain -days $gblInactiveDays foreach ( $Usr in $Accounts ){ $User = Get-User $Usr .AccountName if ( $User .RecipientType -eq 'UserMailbox' ){ $path = Get-DN $User .samAccountName "'" + $path + "'" apply_Permissions $User .Identity Export_ToPST $User .Identity remove_Permissions $User .Identity disable_mailbox $User .Identity $QADPath = Get-QADUser  .samAccountName $account =[ ADSI ] $path $account .psbase.invokeset( "AccountDisabled" , "True" ) $account .setinfo() Set-QADUser -Identity $user .samAccountName -Description "Account Disabled by PST Export Script" moveToDisabledOU $QADPath .DN } } } function export_ToPST ( $strMailID ){ Export-Mailbox -Identity $strMailID -PSTFolderPath $DestinationPSTPath -Confirm : $false } get_InactiveAccounts -Identity $ User .samAccountName $ tili = [ADSI] $ path $ tili .psbase.invokeset ("accountdisabled", "True") $ tili .setinfo () Set-QADUser -Identity $ user .samAccountName -Kuvaus "Account Disabled by PST Export Script "moveToDisabledOU $ QADPath .DN}}} toiminto export_ToPST ($ strMailID) {Vie postilaatikon -Identity $ strMailID -PSTFolderPath $ DestinationPSTPath -Tarkista: $ false} get_InactiveAccounts 

Käyttämällä script

Ennen skripti voidaan suunniteltu käytettäväksi, sinun täytyy varmistaa, että olet suorittanut seuraavat toimenpiteet:

  • Luo OU sisällä Active Directory infrastruktuuri nimeltään "DisabledUsers" - katso alla

ADUC-DUPic

  • Luo käyttäjätili oikean Exchange Oikeudet omassa Exchange-ympäristössä - tilille tarvitsee postilaatikkoon ja ovat seuraavat Exchange käyttöoikeudet:
    • Exchange Server Administrator
    • Paikallinen Administrator Management / Exchange Server
  • Sinun pitäisi luoda hakemistoon Management Server, joka sisältää viedyt pst-tiedostoja - minun esimerkissä olen luonut kansion nimeltä "X: \ PSTs" - katso alla

pstExprt002

  • Sinun pitäisi muokata komentosarjatiedosto ja muuttaa seuraavia arvoja (l ocated yläosassa skriptin, vastaamaan asetukset oman ympäristön)
  50 $ GblInactiveDays = 50 
  "X:\Psts" $ DestinationPSTPath = "X: \ PSTs" 
  "Administrator@ethan.local" $ ServiceAccount = "Administrator@ethan.local" 

Arvo $ gblInactiveDays on siemen arvo kuinka kauan tili ei ole kirjautuneena - minun esimerkki kirjoitus etsiä Active Directory tilit, joita ei ole kirjautuneena sisään 50 päivää.

Arvo $ DestinationPSTPath on sijainti paikallinen johto palvelin, jossa pst-tiedostoja tallennetaan.

Arvo $ ServiceAccount pitäisi olla SMTP-osoite käyttäjän tilin, jonka olet luonut viedä postin kohteet Postilaatikot.

  • Kun olet muokannut komentosarjatiedosto koskaan ollut näin helppoa, sinun pitäisi luoda komentojonotiedoston, joka toteuttaa käsikirjoituksen ja voidaan ajoittaa kautta Windows Task Manager.

Voidakseen tehdä tämän sinun tulee luoda .cmd seuraavien komentojen sen sisältämät:

echo Off
Powershell -komennolla "& {X: \ <PathToScript> \ ExportMailboxesToPst-BasedonLogon.ps1}"

Katso alta:

pstExprt001

Kun olet tehnyt edellä, sinun pitäisi ajoittaa sen kautta Windows Task Manager suorittamaan (käyttäen palvelua tilillä että olet määrätty) kerrallaan, joka on sopivin teidän ympäristöön.

Script Käyttö

On huomattava, että riippuen koosta postilaatikot koski - aika kuluu tähän skriptiä voi vaihdella muutamasta minuutista muutamaan tuntiin tai jopa päiviä) - sinun pitäisi ottaa tämän huomioon, kun aikataulujen tehtävä Windows ajastimella.

Kun skripti suoritetaan se suorittaa seuraavat toimet:

  • Etsikää Active Directory tilit Postilaatikot, joita ei ole näytetty, että $ gblInactiveDays
  • Levitä postilaatikon täydet käyttöoikeudet palveluun tilin jokaiseen Postilaatikko
  • Vie e-Mail kohteita pst-tiedosto sijaitsee PST polku sijainti
  • Poistaa Exchange-postilaatikon
  • Poistaa AD-
  • Siirrä AD tilin DisabledUsers OU
  • Leima kuvaus tilin monikerin että se oli sijoitettu sinne käsikirjoituksen

pstExprt004

Siksi jälkeen suorittamisen PST kansiossa sinun pitäisi nähdä PST: n tileistä, joka noudattaa suodatin - katso alla

pstExprt006

Vuonna DisabledUsers OU Active Directoryn käyttäjät ja tietokoneet sinun pitäisi nähdä listan tilejä, jotka on käsitelty - katso alla

pstExprt007

Sisällä Exchange Management Console sinun pitäisi nähdä, että asiaa tilillä on poistettu - katso alla

Ennen:

pstExprt003

Jälkeen:

pstExprt005

Toivon, että tämä esimerkki antaa vähän inspiraatiota joitakin ihmisiä ja antaa sinulle joitakin viitteitä siitä, miten voit automatisoida prosesseja poistetaan vanha tilien omassa Infrastructure.

comments… read them below or add one } {4 kommenttia ... lukea ne alle tai lisätä yhden }

Jätä kommentti

CAPTCHA Image
Päivitä kuva
*

Edellinen viesti:

Seuraava viesti: