February 3, 2026
powershell

Powershell AD Komutları

Powershell AD ( Active Directory ) komutları, günlük hayatta işimizi kolaylaştıran komutlardır. Ad üzerinden yapacağımız kontrol ve işleri oldukça kolaylaştırarak zaman kazanmanızı sağlar.

Aşağıda Powershell ile sık kullanılan AD Komutları yer almaktır


# AD Modülü Yükleme #

Import-Module ActiveDirectory

# Date Info Scriptin çalıştırıldığı tarihi bir değişkene kaydeder. Excel çıktısında dosya ismine bu tarih eklenmektedir.#

$d = Get-Date -UFormat %d%m%Y

# Users Info #

# Tüm kullanıcı sayısını getirir.#

$AllUsers = Get-ADUser -Filter * |Measure-Object

# Enable olan kullanıcı sayısını getirir.#

$EnableUsers = Get-ADUser -Filter 'enabled -eq $true' | Measure-Object

# Disable olan kullanıcı sayısını getirir.#

$DisableUsers = Get-ADUser -Filter 'enabled -eq $false' | Measure-Object

# Parolası expire olmayan kullanıcı sayısını getirir.#

$PasswordNeverExpireUsers = Get-ADUser -Filter 'passwordneverexpires -eq $true' | Measure-Object

# Parolası kullanmadan login olabilen kullanıcı sayısını getirir.#

$PasswordNotRequiredUsers = Get-ADUser -Filter 'passwordnotrequired -eq $true' | Measure-Object

# Bu bölümde yukarıdaki değişkenlere atanmış komut setleri custom objelere atanır.

$UsersInfo = New-Object -TypeName PSCustomObject

$UsersInfo |

Add-Member -MemberType NoteProperty -Name 'All Users' -Value $AllUsers.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'Enable Users' -Value $EnableUsers.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'Disable Users' -Value $DisableUsers.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'PasswordNeverExpireUsers' -Value $PasswordNeverExpireUsers.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'PasswordNotRequiredUsers' -Value $PasswordNotRequiredUsers.Count -PassThru

$UsersInfo |Export-Excel C:\Temp\ADReport_$d.xlsx -Append -WorksheetName "UsersInfo" -TableStyle Medium16 -Title "Users Info" -TitleBold

# Groups Info#

# Tüm grup sayısını getirir.#

$AllGroups = Get-ADGroup -Filter * |Measure-Object

# Security grup sayısını getirir.#

$SecurityGroups = Get-ADGroup -Filter * -Properties GroupCategory | where {$_.GroupCategory -eq 'Security'} | Measure-Object

# Distribution grup sayısını getirir.#

$DistributionGroups = Get-ADGroup -Filter * -Properties GroupCategory | where {$_.GroupCategory -eq 'Distribution'} | Measure-Object

# Üyesi bulunmayan grup sayısını getirir.#

$EmptyGroups = Get-ADGroup -Filter * -Properties Members | where {-not $_.members} | Measure-Object 

# Bu bölümde yukarıdaki değişkenlere atanmış komut setleri custom objelere atanır.#

$GroupInfo = New-Object -TypeName PSCustomObject

$GroupInfo |

Add-Member -MemberType NoteProperty -Name 'All Groups' -Value $AllGroups.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'Security Groups' -Value $SecurityGroups.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'Distribution Groups' -Value $DistributionGroups.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'Empty Groups' -Value $EmptyGroups.Count -PassThru

$GroupInfo |Export-Excel C:\Temp\ADReport_$d.xlsx -Append -WorksheetName "GroupInfo" -TableStyle Medium16 -Title "Group Info" -TitleBold

 

# Computers Info#

# AD üzerindeki aktif olan tüm computer objelerin sayısını getirir.#

$AllComputersEnable = Get-ADComputer -Filter 'enabled -eq $true' | Measure-Object

# AD üzerindeki disable durumda olan tüm computer objelerin sayısını getirir.#

$AllComputersDisable =Get-ADComputer -Filter 'enabled -eq $false' | Measure-Object

# AD üzerindeki enable durumda olan tüm server objelerin sayısını getirir.#

$AllEnableServers= Get-ADComputer -Filter 'operatingsystem -like "*server*" -and enabled -eq "true"' | Measure-Object

# AD üzerindeki disable durumda olan tüm server objelerin sayısını getirir.#

$AllDisableServers = Get-ADComputer -Filter 'operatingsystem -like "*server*" -and enabled -eq "false"' | Measure-Object

# AD üzerindeki enable durumda olan tüm workstation objelerin sayısını getirir.#

$AllEnableWorkStation = Get-ADComputer -Filter 'operatingsystem -notlike "*server*" -and enabled -eq "true"' | Measure-Object

# AD üzerindeki disable durumda olan tüm workstation objelerin sayısını getirir.#

$AllDisableWorkStation = Get-ADComputer -Filter 'operatingsystem -notlike "*server*" -and enabled -eq "false"' | Measure-Object

# Bu bölümde yukarıdaki değişkenlere atanmış komut setleri custom objelere atanır.#

$ComputersInfo = New-Object -TypeName PSCustomObject

$ComputersInfo |

Add-Member -MemberType NoteProperty -Name 'All Computers (Enable)' -Value $AllComputersEnable.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'All Computers (Disable)' -Value $AllComputersDisable.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'All Servers (Enable)' -Value $AllEnableServers.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'All Servers (Disable)' -Value $AllDisableServers.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'All Workstations (Enable)' -Value $AllEnableWorkStation.Count -PassThru |

Add-Member -MemberType NoteProperty -Name 'All Workstations (Disable)' -Value $AllDisableWorkStation.Count -PassThru

$ComputersInfo |Export-Excel C:\Temp\ADReport_$d.xlsx -Append -WorksheetName "ComputersInfo" -TableStyle Medium16 -Title "Computers Info" -TitleBold