Bulk AD Update durch Excel Datei

Comment : This script updates AD users attributes from excel sheet.

Version : 1.1

This command has been added to script.

[threading.thread]::CurrentThread.CurrentCulture = ‚en-US‘

#

Declare file path and sheet name

$credential=Get-Credential
$ErrorActionpreference = „continue“

[threading.thread]::CurrentThread.CurrentCulture = ‚de-DE‘

$file = „C:\Path\TEST.xlsx“

Create an Excel.Application instance and open that file

$Excelobject = New-Object -ComObject Excel.Application
$Workbook = $Excelobject.Workbooks.Open($file)
$sheetName = „Tabelle1“
$sheet = $Workbook.Worksheets.Item($sheetName)

$objExcel.Visible=$true

Count max row

$rowMax = ($sheet.UsedRange.Rows).count

Count max column

$colMax = ($sheet.UsedRange.Columns).count
$hash = @{}
$server = „DC01.company.com“

Specify starting positions

$row,$col = 1,1
$updatedCount = 0

loop for rows

for ($i=1; $i -le $rowMax-1; $i++)
{

#loop for columns
for($c=0; $c -le $colMax-1; $c++)
{
  #Get all columns values to a hash
  $hash += @{$sheet.Cells.Item($row,$col+$c).text =  $sheet.Cells.Item($row+$i,$col+$c).text}


}

#Create an object and assign hash keys as object property
$Object = New-Object -TypeName PSObject -Property $hash

#Get User via SamAccountname
$user = Get-ADUser -Filter {„SamAccountName -eq ‚$($Object.sAMAccountName)'“} -Server $server -Credential $credential

#Set Users attribute with matched object attribute
$user | Set-ADUser -GivenName $Object.GivenName -Surname $Object.SN
-DisplayName $Object.Displayname -OfficePhone $Object.PhoneNumber
# -Description $Object.Description -Country $Object.Country
-Office $Object.Office -Title $Object.Title
-Company $Object.Company -Department $Object.Department
-Manager $Object.Manager `
-Mobile $Object.Mobile
#-Fax $Object.Fax

#If you want to edit Object common name, you can remove enable two lines below.

#$userguid = $user.ObjectGUID.Guid
#$user | Rename-ADObject -NewName $Object.DisplayName -Server $server -Credential $credential

$hash = @{}
Write-Host $User.Name „- User attributes have been updated.“ -ForegroundColor Yellow
Start-Sleep -s 1
$updatedCount += 1

}

Write-Host $updatedCount „Users have been updated“ -ForegroundColor Green

close excel file

$Excelobject.quit()

Active Direcrory Report Wann wurde zuletzt das Passwort geändert?

Mit Hilfe diesen PowerShell Befehls kann herausgefunden werden, wann die User zuletzt Ihr Passwort geändert haben und ob die Option „Passwort läuft nie ab“ gesetzt wurde:

get-aduser -filter * -properties Name,passwordlastset,passwordneverexpires | Select-Object Name,passwordlastset,passwordneverexpires | Export-Csv C:\Pfad\Last_PW_Set.csv -NoTypeInformation

Postfach Mailregel mit Powershell exportieren

Damit man nicht auf die E-Mails eines Benutzerpostfaches zur Fehlerbeseitigung zugreifen muss, kann man mit Hilfe diesen Befehls die aktuellen Mailregeln der Mailbox(en) exportieren:

$mailboxes = get-mailbox
foreach ($mailbox in $mailboxes) {get-InboxRule -Mailbox $mailbox.UserPrincipalName | export-csv "C:\$mailbox.csv"}

Natürlich kann man auch z.B.
$mailboxes = get-mailbox irgendeinPostfach@meineDomain.de verwenden um nur eine Mailbox abzufragen.

Über diesen Weg ist auch ein Export und Import von Mailregeln möglich.

Windows Server zeigt Fehler (rot) im Server Manager / Sync Host service

Aufgrund des Sync Host Services wird im Server Manager ständig ein Fehler bei Services angezeigt bzw. dieser ständig rot dargestellt. Leider lässt sich dieser Service seit einiger Zeit nicht mehr über die services.msc auf manuell bzw. deaktiviert stellen. Glücklicher Weise aber noch via Kommandozeile (mit Administratorrechten DOS CMD starten):

sc config "OneSyncSvc" start=disabled

In meinem Fall deaktiviere ich diesen Dienst, da ich keinen Grund wüsste, warum er auf einem Server Betriebssystem benötigt wird. Ich hoffe das hilft den einen oder anderen ebenfalls weiter etwas Ordnung in das „Monitoring“ zu bringen. 🙂

Bitlocker Key Upload to Active Directory (with TPM)

 $drive = Get-BitLockerVolume | ?{$_.KeyProtector | ?{$_.KeyProtectorType -eq ‚RecoveryPassword‘}} | select -f 1

$key = $drive | select -exp KeyProtector | ?{$_.KeyProtectorType -eq ‚RecoveryPassword‘} | select -f 1

Backup-BitLockerKeyProtector $drive.MountPoint $key.KeyProtectorId

Write-Host „Backing up drive $drive, key $($key.KeyProtectorId), password $($key.RecoveryPassword)“ 

Bitlocker Key manuell/nachträglich im AD abspeichern

 

Falls ein Laufwerk vor dem DomainJoin und konfigurieren der GPO mit Bitlocker verschlüsselt wurde, kann mit Hilfe diesen Skripts der RecoveryKey etc. nachträglich in das Active Directory abgespeichert werden.

In diesem Skript wird zunächst abgefragt welche Volumes verschlüsselt sind und anschließend die nötigen Informationen im AD hinterlegt.

$BitlockerVolumes = Get-BitLockerVolume

$BitlockerVolumes |

ForEach-Object {

$MountPoint = $_.MountPoint

$RecoveryKey = [string]($_.KeyProtector).RecoveryPassword

if ($RecoveryKey.Length -gt 5) {

$BLV = Get-BitLockerVolume -MountPoint $MountPoint

Backup-BitLockerKeyProtector -MountPoint $MountPoint -KeyProtectorId $BLV.KeyProtector[1].KeyProtectorId

}

Da ich teilweise auf Probleme gestossen bin, sobald mit TPM verschlüsselt wurde, habe ich hierzu ein neues Skript erstellt:https://blog.nd-consulting.de/wp-admin/post.php?post=410&action=edit