Beiträge mit Tag ‘powershell’

Exchange PowerShell Snippets

Hier möchte ich von mir häufig benutzte Exchange PowerShell Befehle notieren.

Weiterleitungen ermitteln

Get-Mailbox -ResultSize unlimited | Where-Object {$_.ForwardingSMTPAddress -ne $null} | Select-Object Name,ForwardingSMTPAddress

Verteilergruppen ermitteln und abspeichern

write-output “” > C:\temp\outputDGmembers.txt
get-distributiongroup | Sort -Property DisplayName | foreach {
$name = $_.displayname
$mailadresse = $_.PrimarySmtpAddress
$output = ‘Group Name: ‘ + $Name + ' ' + $mailadresse
write-output $output >> C:\temp\outputDGmembers.txt
Get-DistributionGroupMember $name | Sort -Property DisplayName | Select DisplayName, Alias, Department >> C:\temp\outputDGmembers.txt
write-output “” “” >> C:\temp\outputDGmembers.txt
}

Senden-Als Berechtigungen ermitteln (kann länger dauern)

Get-Mailbox | Get-ADPermission | where {($_.ExtendedRights -like '*Send*') -and -not ($_.User -like "NT-AUTORITÄT\SELBST")}  | Format-Table -Auto Identity,User,Deny,ExtendedRights

Senden im Auftrag ermitteln (kann länger dauern)

Get-Mailbox | Where-Object {$_.GrantSendOnBehalfTo -ne $null} | fl DisplayName,Alias,Identity,GrantSendOnBehalfTo

Vollzugriff auf Postfach ermitteln (alle)

$nbdomain = "NetBIOS-DOMAIN"
Get-Mailbox | Get-mailboxPermission | Where-Object { ($_.accessRights -like "*fullaccess*") -and -not ($_.User -like "nt-autorität\selbst") -and -not ($_.User -like "$nbdomain\Domänen-Admins")-and -not ($_.User -like "$nbdomain\Organisations-Admins") -and -not ($_.User -like "$nbdomain\Organization Management") -and -not ($_.User -like "$nbdomain\Administrator") -and -not ($_.User -like "$nbdomain\Exchange Servers") -and -not ($_.User -like "$nbdomain\Exchange Trusted Subsystem") -and -not ($_.User -like "nt-autorität\system")} | ft -AutoSize

Berechtigung eines einzelnen Postfachs auslesen

$user = "k.mustermann"
get-mailbox -identity $user| Get-MailboxPermission | ?{($_.IsInherited -eq $False) -and -not ($_.User -match "SELBST")} | ft $user,User,AccessRights -AutoSize

Mailbox Exportieren vorbereiten. Dieser Nutzer hat nach dem Neustart der Powershell das Recht Postfächer zu ex- bzw. importieren.

New-ManagementRoleAssignment -Role "Mailbox Import Export" -User <BENUTZERAME>

Postfach exportieren

New-MailboxExportRequest -Mailbox <username> -FilePath \\servername\verzeichnis\username.pst -BadItemLimit 100

Postfach importieren

New-MailboxImportRequest -Mailbox <username> -FilePath \\servername\verzeichnis\username.pst -BadItemLimit 100

Mailbox Export überwachen

Get-MailboxExportRequest
Get-MailboxExportRequest |Sort-Object -Property Status | ft FilePath, Status

Bulk Export von Postfächern

$allmailboxes = Get-Mailbox
$allmailboxes |% {$_| New-MailboxExportRequest -FilePath "\\localhost\c$\$($_.Alias).pst" -BadItemLimit 100}

Mailqueue (ausführlich) ausgeben. (Info-Link)

Get-Queue | Format-List

Mailqueue erneut abarbeiten (Info-Link)

Retry-Queue 

Maillog durchsuchen. Datum ist amerikanisch! (Info-Link)

Get-MessageTrackingLog -ResultSize Unlimited -Start "5/20/2021 8:00AM" -End "5/20/2021 11:00PM" 
Get-MessageTrackingLog -ResultSize Unlimited -Start "5/20/2021 8:00AM" -End "5/20/2021 11:00PM" | Format-List

Nachrichtentracking, wurde Mail an den Connector übermittelt?

Get-MessageTrackingLog -EventId Send -ResultSize Unlimited -Sender [sender@mail] -Recipients [empfänger@mail] | Format-List Time*,MessageSubject,SourceCo*,Send*,Recipient*
  

DotNet 3x unter Windows 10 nachinstallierten

Am einfachsten geht dies in der (Admin) PowerShell mit folgendem Befehl:

dism.exe /online /enable-feature /featurename:NetFX3 /All 

Sollte keine Internetverbindung bestehen und die Windows 10 Installation DVD zur Hand liegen, so kann man aus dem Ordner Sources das Verzeichnis lxs nach c:\temp kopieren und wie folgt installieren:

dism.exe /online /enable-feature /featurename:NetFX3 /All /Source:c:\temp\sxs /LimitAccess

Merker: Apps entfernen mit Powershell

Am einfachsten kann man unter Windows 10 alle Apps (im Benutzerkontext) mit der Powershell entfernen. Dazu bedarf es nur den einen Befehl:

Get-AppxPackage * | Remove-AppxPackage

Möchte man alle Pakete wieder installieren, so geht das mit folgenden Powershell Befehl:

Get-AppxPackage | foreach {Add-AppxPackage -register „$($_.InstallLocation)\appxmanifest.xml“ -DisableDevelopmentMod} 

SMBv1 und Windows 10

Sollte man sich bei einem älteren Windows Server anmelden wollen, der noch SMBv1 unterstützt, dann muss man Windows 10 (ab Version 1703) dazu bringen dieses wieder zu nutzen. Dies funktioniert wie folgt:

AD Auswertungen mit Get-ADUser

Um mal schnell „Dinge“ im ActiveDirectory (AD) abzufragen eignet sich besonders gut die PowerShell (Active Directory-Modul). Aufgabe war es eben mal schnell die Homelaufwerke der Benutzer zu kontrollieren ob sich nicht noch ein (weitere) falscher Buchstabe eingeschummelt hat.