Wednesday 22 April 2020

Check SPN Entry Contains DNS Alias

# DNS Alias Info

$DNSAlias = Get-Content C:\temp\nas.txt

# AD Server Information

$ADObjects = Get-ADComputer -Filter * -SearchBase "OU=TESTServer,DC=test,DC=local" -Property Name,ServicePrincipalName | Select-Object name,@{Name="SPN";e={$_.ServicePrincipalName -join ","}}

# Check Server SPN entry contains DNS Alias

foreach ($DNS in $DNSAlias){
foreach ($ADObj in $ADObjects){
    If ($ADObj -like "*$DNS*"){
        $log = "$DNS Object found in $ADObj" | Out-File -Append C:\temp\Result.txt
    }else{
        $Log = "$Dns Object Not Found in $ADObj" | Out-File -Append C:\temp\Result-Not.txt
    }
    }
    }

Check Active Directory Computer Object Contains DNS Alias

# DNS Alias Info

$DNSAlias = Get-Content C:\temp\dns.txt

# AD Server Information

$ADObjects = Get-Content C:\temp\nas.txt| Get-ADComputer -Property
Name,ServicePrincipalName | Select-Object name,@{Name="SPN";e={$_.ServicePrincipalName -join ","}}

# Check Server SPN entry contains DNS Alias
foreach ($DNS in $DNSAlias){
foreach ($ADObj in $ADObjects){
    If ($ADObj -like "*$DNS*"){
        $log = "$DNS Object found in $ADObj" | Out-File -Append C:\temp\Result.txt
    }else{
        $Log = "$Dns" | Out-File -Append C:\temp\Result-Not.txt
    }
    }
    }

Check OS Information List of Computers


$dcs = Get-Content C:\temp\server.txt

foreach ($dc in $dcs){

    If ((Get-ADComputer -Filter 'Name -like $dc') -ne $null)
    {
    Get-ADComputer -Identity $dc -Properties * | Select-Object name,OperatingSystem | Export-Csv C:\temp\3.csv -Append -NoTypeInformation

    }

    else {
    "$DC" |Select-Object @{name="Name";e={$Dc}},OperatingSystem | Export-Csv C:\temp\3.csv -Append -NoTypeInformation
    }
    } 

Check SMB feature Installed on Domain Controllers

$DCs = Get-ADDomainController -Filter * | Select-Object name -ExpandProperty name

    foreach ($dc in $dcs ) {
    Get-WindowsFeature -computername $dc fs-smb1 | Select-Object @{name="Computer Name";e={$Dc}},InstallState

    }  

Check Specific REG Value IN All Domain Controllers


$DCs = Get-ADDomainController -Filter * | Select-Object name -ExpandProperty Name

foreach ($dc in $dcs){

Invoke-Command -ComputerName $dc -ScriptBlock {Get-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\ntds\Diagnostics\ | select @{Name="Server Name";e={$dc}},"16 LDAP Interface Events"}

}

Event log Count in Domain Controller


#List of Domain Controller to pull the events and get the count

$DCs = Get-ADDomainController -Filter * | Select-Object -ExpandProperty Name

foreach ($dc in $dcs){

    $log = (Get-EventLog -LogName 'Directory Service' -ComputerName $dc | Where-Object {$_.EventID -eq '4770'}).count

    Write-Host "Name of $DC No of event in count $log"

    } 

Extract The Group Members from Custom Groups


# Custom Group List

$ServerNameGroup = Get-Content C:\temp\Server.txt

# Extract Group Members one by one.

foreach ($ADGroup in $ServerNameGroup){

    # Check If Group Already have member to extract

    If ((Get-ADGroupMember $ADGroup ).length -ne 0){
    Get-ADGroupMember -Identity $ADGroup | select @{Name="ServerNameGroups";expression={$ADGroup}},name,objectClass  |Out-File -Append C:\temp\Gropinfo.csv
    } Else {

    # Add Empty Group in Log.

    "$ADGroup Member Value is Empty" |Out-File -Append C:\temp\Gropinfo.csv

    }
    }