Domain kullanıcılarının bilgisayar veya serverlardan toplu olarak logout yapmak için sizler için powershell script yayınlıyorum. Neden Domain User logout yapma gereksinimi duymaktayız.?
Bu konuda sektör içerisinde birçok problem ile karşılaşılmaktadır. Bunlardan bir kaçını sizlerle paylaşacağım.
Bazı durumlarda kullanıcı hesapları birden çok bilgisayarda oturum açmaktadır. Logout yapmadan çıkış yapılması hesabın bilgilerinin o bilgisayarda kalmasına neden olmaktadır. ATA raporlarında bunları çok detaylı olarak görmekteyiz. Bu bilgisayarlardan credential çalınma olasılığı oluşturmaktadır. Bir de yetkili kullanıcı ile açıldıysa çok çok dikkatli olunması gerekmektedir.
Ayrıca Bazı kullanıcıların bir çok bilgisayarda veya sunucuda oturum açmaları dolayısıyla şifre değişikliklerinde hesabın kitlenmesi durumunda bu hesabın nereden kitlendiğini bulmak çok zaman almaktadır. Hesapların bulunması için SCOM account Lockout Report kullanılmaktadır.. Fakat ortamda SCOM yoksa bu script ile rahatça bularak logout edebilirsiniz.
Script üzerinde OUPATH olarak belirtilen yere istenilen OU’nun distinguished name girilmektedir. İstenilen OU adının üzerine gidilerek properties sekmesine tıklanmaktadır. Sonrasında Attribute Editor kısmında rahatça ulaşılmaktadır.
####ou path'e istenilen ou nun distinguished name girilir...
$OUPATH=""
$computers= get-adcomputer -Filter * -SearchBase $OUPATH | Select-Object -ExpandProperty Name
$username=read-host "username giriniz"
$hepsindencıkıs=read-host "hepsinden cıkıs YestoAll(A),No(N)"
if($hepsindencıkıs -eq 'A'){
foreach ($computer in $computers)
{
$result = quser /server:$computer 2>&1 | Where-Object { $_ -match $username }
$sessionID = ($result -split ' +')[2]
if ($result.count -gt 0)
{
Write-Host "$computer dan $username kullanıcısı için çıkış yapılıyor......." -ForegroundColor Yellow
logoff $sessionID /server:$computer
Write-Host " $computer dan $username cıkış yapıldı" -ForegroundColor Green
}
else{
Write-Host "$computer da $username session mevcut değil" -ForegroundColor Red
}}
}
if($hepsindencıkıs -eq 'N'){
foreach ($computer in $computers)
{
$result = quser /server:$computer 2>&1 | Where-Object { $_ -match $username }
$sessionID = ($result -split ' +')[2]
if ($result.count -gt 0)
{
$confirm=read-host " $computer dan Log of yapalım mı Yes(Y),No(N)"
if($confirm -eq "y"){
logoff $sessionID /server:$computer
}
elseif($confirm -eq "N"){
Write-Host "nothing to do" -ForegroundColor Yellow
}
else{
write-host "secim yanlıs" -ForegroundColor Yellow
}
}
else{
Write-Host " $computer da $username session mevcut değil" -ForegroundColor Red
}
} }
else{
Write-Host "çıkış yapılıyor.........."
}
Script çalışırken size sormaktadır. Bütün bilgisayarlardan çıkış yapılsın mı yoksa size sorarak mı yapılsın konusunda kullanıcıya bırakılmaktadır. User name sorularak bu kısımda kullanıcıdan kullanıcı adı istenir başına domain adını yazmanıza gerek duymamaktadır . Sizler isterseniz sonuçları csv olarak dışarı çıkarabilirsiniz .Domain User Logout konusu bu şekilde anlatılmış olup ,Diğer yazılarımızı görüntülemek için lütfen bağlantıyı kullanın.