Şöyle bir ihtiyaç doğdu bizde elleri sıvadık. Yoğun bir workgroup ortamının domaine alındığı yerde belli isimlendirme standardlarına uyan değerlerin belirtilen OU ya taşınma ve computer hesabı taşındıktan sonra taşınan değer bilgilerinin mail ile iletilmesi talep edilmektedir. Bizde hızlıca aşağıda bu adımları gerçekleştirdik.
Prefix değerlerimiz ABC ve ONR ile başlayacak suffix değerimiz ise GPS ile biten computer hesaplarını kapsayacak şekilde yapılandırılmıştır.
# Gerekli parametreleri ayarlayın $sourceOU = "CN=Computers,DC=babur,DC=com,DC=tr" $destinationOU = "OU=Store-Computer-Objects,OU=Stores-DP,OU=005-Stores,DC=babur,DC=com,DC=tr" $usernamePrefixes = @("ABC", "ONR") $suffix = "GPS" $senderEmailAddress = "infra@babur.com.tr" $smtpServer = "10.x.x.x" $smtpPort = 25 # Active Directory modülünü içe aktar Import-Module ActiveDirectory $willmove = $null $willmove=@() # Taşınacak hesapları alın $accountsToMove = Get-ADComputer -SearchBase $sourceOU -Filter * | Where-Object { $computerName = $_.Name $prefixFound = $false $suffixFound = $false foreach ($prefix in $usernamePrefixes) { if ($computerName -like "$prefix*") { $willmove += $computerName $prefixFound = $true break } } if ($computerName -like "*$suffix") { $willmove += $computerName $suffixFound = $true } $suffixFound } # E-posta gönderme işlemi $mailBody = "Asagidaki hesaplar belirtilen OU'ya tasindi:`n`n" $mailBody += $willmove $mailParams = @{ SmtpServer = $smtpServer Port = $smtpPort UseSsl = $false From = "infra@babur.com.tr" To = "infra-alert@babur.com.tr" Subject = "Hesap Tasima Bildirimi" Body = $mailBody } # Hesapları belirtilen OU'ya taşıyın foreach ($account in $willmove) { Get-ADComputer $account | Move-ADObject -TargetPath $destinationOU } if ($willmove -ne $null) { write-host "tasinacak hesap var" Send-MailMessage @mailParams } else { write-host "tasinacak hesap yok" }