Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Get-DomainControllers([string]$BaseDN){
- $strFilter = "(&(objectCategory=Computer))"
- $objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://ou=domain controllers,"+ $BaseDN)
- $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
- $objSearcher.SearchRoot = $objDomain
- $objSearcher.PageSize = 1000
- $objSearcher.Filter = $strFilter
- $objSearcher.SearchScope = "Subtree"
- $colResults = $objSearcher.FindAll()
- $dc = @()
- foreach($objResult in $colResults){
- $objItem = $objResult.Properties
- $dc += $objItem.name
- }
- return $dc
- }
- function Run-Report([string]$computer){
- $path = "C:\Users\lfalk\Desktop\AD_Helth_Check\"+$computer+"\"
- if ((Test-Path -path $path) -ne $true)
- {
- New-Item $path -type directory
- }
- $tempPath = $path+"DCDiag.txt"
- echo "**** Running DCDiag Status ****" > $tempPath
- Invoke-Command -ComputerName $computer -ScriptBlock { dcdiag /v } >> $tempPath
- $tempPath = $path+"Global_Catalog.txt"
- echo "**** Finding Global Catalogs ****" > $tempPath
- Invoke-Command -ComputerName $computer -ScriptBlock { dsquery server -isgc } >> $tempPath
- $tempPath = $path+"DNS_TEST.txt"
- echo "**** Running DCDiag DNS Test ****" > $tempPath
- Invoke-Command -ComputerName $computer -ScriptBlock { dcdiag /test:dns } >> $tempPath
- $tempPath = $path+"DNS_Registration.txt"
- echo "**** Test DNS Registration ****" > $tempPath
- Invoke-Command -ComputerName $computer -ScriptBlock { dcdiag /test:registerindns /dnsdomain:omni.lan } >> $tempPath
- $tempPath = $path+"Network_Diag.txt"
- echo "**** Network Connectivity Tester ****" > $tempPath
- Invoke-Command -ComputerName $computer -ScriptBlock { netdiag /v } >> $tempPath
- $tempPath = $path+"Verify_Trust.txt"
- echo "**** Verify Trust Relationships ****" > $tempPath
- Invoke-Command -ComputerName $computer -ScriptBlock { netdom query /verify trust } >> $tempPath
- $tempPath = $path+"Show_Replications.txt"
- echo "**** Show Replication and if it was successful or not ****" > $tempPath
- Invoke-Command -ComputerName $computer -ScriptBlock { repadmin /showreps } >> $tempPath
- $tempPath = $path+"Replication_Errors.txt"
- echo "**** Replicatoin Errors check ****" > $tempPath
- Invoke-Command -ComputerName $computer -ScriptBlock { repadmin /replsum /errorsonly } >> $tempPath
- $tempPath = $path+"DHCP_Servers.txt"
- echo "**** verify the DHCP server count and names ****" > $tempPath
- Invoke-Command -ComputerName $computer -ScriptBlock { Netsh dhcp show server } >> $tempPath
- $tempPath = $path+"GPO_Status.txt"
- echo "**** Checking GPO Status ****" > $tempPath
- Invoke-Command -ComputerName $computer -ScriptBlock { gpotool /v } >> $tempPath
- }
- $DCs = Get-DomainControllers("dc=omni,dc=lan")
- foreach($DC in $DCs){
- Start-Job { Run-Report($DC) }
- }
Add Comment
Please, Sign In to add comment