Schlagwort-Archive: Powershell

einfaches Umbennen von AD Objekten mit der Powershell

Ich habe mich schon öfter geärgert, wenn ich mich beispielsweise beim Erstellen einer neuen Active Directory Gruppe über die PowerShell verschrieben habe. Nu ist es leider so, dass der Name in mehreren Feldern hängt. Manche davon lassen sich mit dem Set-ADGroup Befehl ändern, aber meistens nicht alle.

Man kann sich das Leben allerdings auch sehr leicht machen.

Rename-ADObject „ObjectGUID des betreffenden Objektes“ -NewName „neuerName“

Die ObjectGUID könnt ihr immer über ein Get-Befehl abfragen (Beispiel Get-ADGroup -identity „namedergruppe“)

Tja manchmal kann das Leben so simpel und einfach sein.


Passwort hinterlegen bei der Erstellung von Benutzerkonten / Postfach

Um ein Benutzerkonto bzw. ein Postfach anzulegen würde man wie folgt vorgehen.

Als erstes das Passwort abfragen

$password = Read-Host „Enter password“ -AsSecureString

Dann das eigentliche Kommando um das Postfach zu erstellen mit dem hinterlegtem $password

New-Mailbox -UserPrincipalName hermann@itbasic.de … -Password $password -ResetPasswordOnNextLogon $true

Das Passwort kann jedoch ohne vorherige Abfrage hinterlegt werden, das ist zum Beispiel für automatisierte Vorgänge hilfreich.

New-Mailbox -UserPrincipalName hermann@itbasic.de … -Password (ConvertTo-Securestring “Password!” –asplaintext –Force) -ResetPasswordOnNextLogon $true

Prüfen ob ein Ordner als Homedirectory eingebunden ist

Active Directory bietet die Möglichkeit den Benutzer bei der Anmeldung automatisch mit dem Homedrive bzw. dem Homedirectory zu verbinden. Die Homedirectorys liegen auf einem Server, was unter anderem den Vorteil der einfachen Datensicherung hat.
Leider kommt es zwischenzeitlich vor, das auf dem Server verweiste Ordner liegen.

Das folgende Powershell Kommando gibt die Ordner an, die unter \\server1\userordner liegen und nicht als Homedirectory eingebunden sind.

$ordner = gci \\server1\userordner -Filter * | ? { $_.PSisContainer -eq $true} ; foreach ($o in $ordner) { $filter = „*$o“ ; $c = get-aduser -filter {homedirectory -like $filter } | measure-object ; if ( $c.count -Eq 0 ) { $o.name } }

email über die Konsole versenden

In diesem Beispiel habe ich eine Funktion gefunden um eine Email per Konsole zu versenden inklusive Dateianhang:

function sendmail($body)
{
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$att = new-object Net.Mail.Attachment(„$datei“)in und wieder ist
$SmtpClient.Host = „mail.itbasic.de“
$mailmessage.from = „info@itbasic.de“
$mailmessage.To.add(„lieschen.mueller@itbasic.de“)in und wieder ist
$mailmessage.Subject = “Testmail Powershell”
$MailMessage.IsBodyHtml = $true
$mailmessage.Body = $body
$mailmessage.Attachments.Add($att)
$smtpclient.Send($mailmessage)
}

Die eigentliche Email wird dann wie folgt abgesetzt:
# Dateianhang angeben
$datei = „log.txt“
# der Text
$body = „Anbei die Textdatei mit den Infos“
# email absenden
sendmail $body

Benutzerpostfach exportieren

vor der Powershell habe ich exmerge verwendet um ein Benutzerpostfach zu exportieren.

Aber wie gesagt vor der Powershell, jetzt geht es einfach mit

New-MailboxExportRequest -Mailbox lieschen.mueller -FilePath „\\server\freigabe\lieschen.mueller.pst“

Der Vorteil mit der Powershell ist, es lassen sich mehrere Exportvorgänge nacheinander starten.

Mit Hilfe von

Get-MailboxExportRequest | Get-MailboxExportRequestStatistics

kann man sehen wie weit der Export ist. Um aus der Liste alle fertigen Exporte zu entfernen reicht

Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest

.

Über

New-MailboxImportRequest -Mailbox lieschen.mueller -FilePath „\\server\freigabe\lieschen.mueller.pst“

lässt sich das Postfach wieder importieren.
Für den Import gibt es noch weitere Parameter.