Utveksling 2007/2010 - Eksporter alle Registry-innstillinger ved hjelp av PowerShell ...

av Andy Grogan2 september 2009 · 0 kommentarer

i 2007 Exchange (General) , Exchange-registret innstillinger , Exchange Service , Powershell

Gjort litt ryddigere og ytelse gjennomgang nylig på en rekke av mine Exchange-servere i arbeid, og samtidig gjøre så jeg merket at jeg har (gjennom årene) gjort en rekke noen endringer i Windows-registeret i forhold til Exchange Service.
Mens gjennomgå disse endringene, kan jeg huske at det var en rekke grunner til hvorfor jeg hadde gjort dem - for eksempel ytelse, og samferdselsspørsmål som jeg hadde kommet over med leverandører.

Men det faktum at jeg hadde funnet disse endringene igjen og gitt at grunnene for å gjøre dem er ikke fokus for denne artikkelen, kan du bli tilgitt for å spørre "hvorfor har jeg løftet det?"

Vel to ting slo meg mens jeg gjennomgikk disse innstillingene:

  1. Hvis jeg måtte gjenopprette fra backup, og ikke bruker "System State" Jeg ville mistet dem alle, og finner det svært vanskelig å finne ut hvilke endringer for å gjøre igjen i en restaurering situasjon
  2. Gå gjennom Exchange Services i registeret er vanskelig å gå med Regedit

Så gitt ovenfor jeg begynte å tenke på en måte å eksportere alle Exchange-Exchange sentriske register innstillingene på en server i én fil - som kan brukes til restaurering eller referanse senere.
Jeg gikk gjennom en rekke metoder, for eksempel å lage et lite program i C # bruker Registry klasse, og VBScript - men til slutt slo jeg på en blanding av Powershell og registeret Kommandolinjeprogram (Regedit.exe).

Følgende er manuset som jeg kom opp med:

  $ Exch = Get-ChildItem-Path HKLM: \ SYSTEM \ CurrentControlSet \ Services | der {$ _.Name-aktig '* Utveksling *'} 
  $ RegSeed = $ Exch.Count 
 $ SeedIndex = 0 
 $ DirectoryPath = "c: \ ExchRegDirectory" 
  if (! (Test-Path-banen $ DirectoryPath))  
 { 
  New-vare $ DirectoryPath-type katalog 
  } Else { 
  Fjern-vare $ DirectoryPath-Recurse 
  New-vare $ DirectoryPath-type katalog 
 } 
 While ($ SeedIndex-ne $ RegSeed) {$ exe = "Regedit.exe" $ fname = "$ DirectoryPath \ ExchangeReg [$ SeedIndex]. Txt" & $ Exe / e $ fname $ Exch [$ SeedIndex]. Navn $ SeedIndex + +} $ MergeApp = "cmd" $ MergerFile = "ExchangeServices.dat" $ ExchName = "ExchangeServices.txt" 
  & $ MergeApp / c "Kopier $ DirectoryPath \ *. Txt $ DirectoryPath \ $ MergerFile" 
 & $ MergeApp / c "Del $ DirectoryPath \ *. Txt" 
 & $ MergeApp / c "Ren $ DirectoryPath \ $ MergerFile $ ExchName" 
  Write-Host "Script har fullført" 

Du kan laste ned skriptet ovenfor fra følgende link:

Script ExportExchangeRegistrySettings.ps1

For bruk skriptet ovenfor - laste den ned til en av dine Exchange-servere (det vil fungere med alle Exchange 2007 og 2010 server med enten alle roller installert eller segregert roller (kommer til å tenke på det, for hvis du installerer Powershell på Exchange din 2003 servere det skal også fungere) og kjøre den fra en Powershell Command Window (du trenger ikke å bruke Exchange Management Shell for at det skal fungere som den ikke bruker noen av spesifiserte Cmdleter).

For eksempel hvis du laster ned manuset til c: \-stasjonen du kunne kjøre det via følgende metode:

[START-> KJØR]

Deretter skriver du "Powershell"

Fra Powershell kommandovinduet skriver følgende kommandoer:

  Set-ExecutionPolicy "RemoteSigned" 
  cd \ 
  c: \ 
  . \ ExportExchangeRegistrySettings.ps1 

Følgende er et eksempel skjerm utgang fra manus:

  Directory: Microsoft.PowerShell.Core \ FileSystem :: C: \ 
  Modus LastWriteTime Lengde Navn 
 ---------------------------  
 d ---- 13.09.2009 23:17 ExchRegDirectory  

 c:. \ ExchRegDirectory \ ExchangeReg [0] txt  
 c:. \ ExchRegDirectory \ ExchangeReg [10] txt  
 c:. \ ExchRegDirectory \ ExchangeReg [11] txt  
 c:. \ ExchRegDirectory \ ExchangeReg [12] txt  
 c:. \ ExchRegDirectory \ ExchangeReg [13] txt  
 c:. \ ExchRegDirectory \ ExchangeReg [14] txt  
 c:. \ ExchRegDirectory \ ExchangeReg [15] txt  
 c:. \ ExchRegDirectory \ ExchangeReg [16] txt 
  1 fil (er) kopiert.  
 Script har fullført 
  Ved manuset ferdig, vil du finne at på Exchange-serveren er det en ny katalog som ligger i c: \ ExchRegDirectory, der du vil finne en fil som heter "ExchangeServices.txt" - hvis du åpner denne filen i Notepad du bør se innhold som ligner til følgende: 
  Windows Registry Editor Version 5.00 
  [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MSExchange ActiveSync] 
 @ = "Automatisk forvaltes av Exchange" 
  [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MSExchange ActiveSync \ Diagnostics] 
 "En Forespørsler" = dword: 00000000 
 "2 Configuration" = dword: 00000000 
  [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MSExchange ActiveSync \ HTTP Header Controls] 
  [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MSExchange ActiveSync \ HTTP Header Controls \ 12.0] 
 "X-Powered-By" = dword: 00000001  
 "X-AspNet-Version" = dword: 00000001 
 "Connection" = dword: 00000001  
 "Vary" = dword: 00000001 
  [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MSExchange ActiveSync \ HTTP Header Controls \ 12.1] 
 "X-Powered-By" = dword: 00000001  
 "X-AspNet-Version" = dword: 00000001 
 "Connection" = dword: 00000001  
 "Date" = dword: 00000001 
 "Server" = dword: 00000001  
 "Cache-Control" = dword: 00000001 
 "MS-Server-ActiveSync" = dword: 00000001  
 "Vary" = dword: 00000001 
  [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MSExchange ActiveSync \ HTTP Header Controls \ 2,0] 
 "X-Powered-By" = dword: 00000001  
 "X-AspNet-Version" = dword: 00000001 
 "Vary" = dword: 00000001 

Størrelsen og innholdet i denne filen vil avhenge av rollene installert på Exchange Server som du har utført manuset mot, er sluttresultatet en fil som inneholder alle register innstillingene som er relevante til Exchange på serveren du har valgt å spørring.
Håper at dette hjelper noen underveis.

comments… add one now } {0 kommentarer ... legge en nå }

Legg igjen en kommentar

CAPTCHA Image
Oppdater bilde
*

Forrige post:

Neste post: