Posts mit dem Label PowerShell werden angezeigt. Alle Posts anzeigen
Posts mit dem Label PowerShell werden angezeigt. Alle Posts anzeigen

Freitag, 25. Mai 2018

Tooltip: PowerShell Verbindung nach O365

Hallo zusammen,

mit dem nachfolgenden Script ist es ganz einfach sich per Powershell auf seine O365 Umgebung zu verbinden um dort administrative Tätigkeiten durchführen zu können, https://www.cgoosen.com/2017/03/script-connect-365-ps-connect-to-office-365-services-using-remote-powershell/

Viele Grüße, Jens

Sonntag, 13. März 2016

Kurz notiert: Ausgabe aller Benutzer inkl. letzte Anmeldezeit

Hallo zusammen,

mit diesem Script werden alle Benutzer inkl deren letzte Anmeldezeit am Postfach in eine CSV Datei exportiert. Zusätzlich wird noch das Attribut Company mit ausgeben.

$mailbox = get-mailbox -resultsize unlimited

foreach ($mbx in $mailbox) {Get-MailboxStatistics -Identity $mbx | select displayname, lastlogo
ntime, @{name="office";exp={$mbx.office}} | Export-Csv "c:\temp\mailboxes.csv" -Append }

Viele Grüße, Jens

Montag, 10. August 2015

Kurz notiert: Export der Email Adressen einer bestimmten OU

Hallo zusammen,

mit diesem PowerShell Script ist es möglich alle Mailbox Benutzer einer bestimmten OU zu exportieren - genauer gesagt wird hier lediglich die primäre Email Adresse exportiert, was aber beliebig erweitert werden kann.

get-mailbox -OrganizationalUnit "OU-Name" -resultsize unlimited | select-object PrimarySmtpAddress | Export-Csv "C:\temp\User.csv" -NoTypeInformation -Delimiter ";"


Viele Grüße, Jens

Freitag, 10. Juli 2015

Handling ausgeschiedene Mitarbeiter

Hallo zusammen,

viele Firmen haben das Problem mit Postfachbehandlung ausgeschiedener Mitarbeiter. Sofern das Postfach gelöscht wird, versteht nahezu kein fachfremder ITler diesen komischen NDR, dass dieses Postfach nicht mehr existent ist.

Es muss also eine smartere, benutzer- und kundenfreundlichere Lösung her. Anbei beschreibe ich die Möglichkeit mit wenigen Befehlen eine anständige Abwesenheitsnotiz zentral durch die IT bereitgestellt in Kombination dass eingehende Emails direkt gelöscht werden, so dass das Postfach nicht potentiell überläuft und wieder unlesbare NDRs versendet werden:

New-InboxRule -Mailbox %Mailbox%-MyNameInToOrCcBox $true –DeleteMessage $true
Mit dieser Posteingangsregel für den speziellen Benutzer werden alle Emails die an dieses Postfach gesendet werden ohne Rückfrage gelöscht

$Message = Get-Content -path c:\temp\oof.txt
Mit diesem Befehl wird die Out-of-Office Vorlagen-Nachricht in die Variable $Message eingelesen. Diese ist entsprechend der jeweiligen OOF Meldung anzupassen.
Mit dem Befehl $Message kann man sich vorab schonmal das Ergebnis anschauen

Set-MailboxAutoReplyConfiguration -Id %Mailbox% -AutoReplyState enabled -InternalMessage "$Message" -ExternalMessage "$Message"

Mit diesem  Befehl wird die OOF Nachricht für das entsprechende Postfach für eingehende und ausgehende Emails ohne zeitlich Begrenzung gesetzt

Mit dem unten stehenden Befehl wird die OOF Einstellung wieder deaktiviert:
Set-MailboxAutoReplyConfiguration –id –AutoReplyState Disabled

Herzlichen Dank für Ihre E-Mail.
Leider existiert die von Ihnen angeschriebene E-Mailadresse nicht mehr.
Sehr gerne teilen wir Ihnen telefonisch einen persönlichen Ansprechpartner für Ihr Anliegen mit.
Wählen Sie hierzu einfach die Nummer unserer Zentrale.

Besten Dank und mit freundlichen Grüßen,

%Firmendaten%

Viele Grüße, Jens

Montag, 6. Juli 2015

Auswertung Mailbox Auslastung

Hallo zusammen,

mit dem unten stehenden PowerShell Script lässt sich einfach die aktuelle Mailbox Auslastung gemessen an der Quota als Exel Export darstellen:

Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails usermailbox | Where {$_.UseDatabaseQuotaDefaults -eq $false} | Select-Object @{label="ProhibitSendQuota";expression={(get-mailbox $_).ProhibitSendQuota.Value.ToMB()}}, @{label="TotalItemSize(MB)";expression={(Get-MailboxStatistics $_).TotalItemSize.Value.ToMB()}} | Export-Csv "C:\Scripts\UserMailboxSizes.csv" -NoTypeInformation -Delimiter ";"

Viele Grüße, Jens

Montag, 1. Dezember 2014

Kurz notiert: Export aller Mitglieder einer Verteilerliste inkl. Details

Hallo zusammen,

mit dem folgenden Powershell Script werden sämtliche Mitglieder einer Verteilerliste ausgelesen und mit den entsprechenden Details exportiert:

Get-DistributionGroupMember %name% | foreach {Get-ADUser $_.samaccountname -properties *} | select name, Description, title, telephoneNumber, mobile, mail, streetaddress, postalcode, City | export-csv -path c:\temp\export.csv -delimiter ";"


Viele Grüße, Jens

Mittwoch, 5. November 2014

Kurz notiert: Ausgabe aller Raumpöstfächer die potentiell keine Besprechungsanfragen automatisch akzeptieren

Hallo zusammen,

Ausgabe aller Räume, die potentiell keine Autoaccept hinterlegt haben:

get-mailbox -resultsize unlimited -filter {recipienttypedetails -eq "roommailbox" -or recipient

typedetails -eq "equipmentmailbox"} | Get-CalendarProcessing | Where-Object {$_.CalendarProcessing -ne "autoaccept"}

Viele Grüße, Jens

Dienstag, 1. Juli 2014

massenhafte Änderung Alias, UPN und SAMAccountName via CSV (bulk change Alias)

Hallo zusammen,

mit diesem Script habe ich eine massenhafte Änderung an den AD Attributen ALIAS und UPN mittels csv Datei durchgeführt:

Import-Csv -Delimiter ‘;’ -Path C:\scripts\file.csv | ForEach-Object{Set-Mailbox $_.name -Alias $_.SAMAccountnameNEW}
Import-Csv -Delimiter ‘;’ -Path C:\scripts\file.csv | ForEach-Object{Set-Mailbox $_.name -SAMAccountName $_.SAMAccountnameNEW}
Import-Csv -Delimiter ‘;’ -Path C:\scripts\file.csv | ForEach-Object{Set-Mailbox $_.name -UserPrincipalName $_.UPN}


Im CSV Datei müssen die Spalten auch entsprechend = SAMAccountNameNEW benamst sein. Dieses Spalte ist meine Quelle für das Neusetzen des Alias.

Viele Grüße, Jens

Dienstag, 24. Juni 2014

Ausgabe aller aktivierten Active Sync User, die eine bestimmte Email Domäne als primäre SMTP Adresse hinterlegt haben

Hallo zusammen,

mit dem nachfolgenden Einzeiler werden alle Exchange Benutzer ausgegeben, die Active Sync aktiviert haben und eine spezielle Email Domäne in der PrimarySmtpAddress hinterlegt haben:

Get-CasMailbox -resultsize unlimited -Filter {ActiveSyncEnabled -eq $true} | where {$_.PrimarySmtpAddress -like "*@contoso.com"} | select-object name, PrimarySmtpAddress | Export-CSV c:\temp\output.csv -NoTypeInformation -encoding utf8


Viele Grüße, Jens

Mittwoch, 18. Juni 2014

Export aller Benutzer einer Email Adress Policy

Hallo zusammen,

mit diesem Zweizeiler habe ich mir alle Benutzer in eine CSV Datei exportiert, die einer bestimmten Exchange Email Address Policy zugewiesen sind, inkl. den LinkedMasterAccount noch mit dazu:

$filter = (Get-EmailAddressPolicy '%Name Email Address Policy%').RecipientFilter

Get-Recipient -RecipientPreviewFilter $filter | get-mailbox | Select-Object Name,PrimarySmtpAddress,samaccountname,linkedmasteraccount | Export-CSV c:\temp\output.csv -NoTypeInformation -encoding utf8


Viele Grüße, Jens

Freitag, 28. März 2014

Export UPN aus AD

Hallo zusammen,

ich hatte neulich die Anforderung, dass alle UPN Informationen aus dem AD zu exportieren, anbei das PowerShell Script:

Get-ADUser -Filter * -SearchBase "OU=User,OU=OU,DC=Kunde,DC=de" -Properties Enabled, Displayname, Givenname, Surname, EmployeeNumber, EmailAddress, Department, StreetAddress, Title, UserPrincipalName | select Enabled, Displayname, GivenName, Surname, EmployeeNumber, EmailAddress, Department, Title, UserPrincipalName | Export-CSV "C:\output.csv"

Um Get-ADUser zu verwenden muss dieses Feature noch aktiviert werden:
Import-Module ActiveDirectory

Montag, 24. März 2014

Hallo zusammen,

ich hatte neulich eine Anforderung, alle unterschiedlichen Namen der Kalender auszugeben. In der Exchange Organisation wurden unterschiedliche Sprachversionen von Outlook verwendet, so dass auch die Ordner "Kalender", in Abhängigkeit der Länderauswahl einen anderen Namen hatte.

Daraufhin ist das unten stehenden Script entstanden:


$mailboxes = @(Get-Mailbox -ResultSize Unlimited)
$report = @()

foreach ($mailbox in $mailboxes)
{
    $inboxstats = Get-MailboxFolderStatistics $mailbox -FolderScope Calendar 

    $mbObj = New-Object PSObject
    $mbObj | Add-Member -MemberType NoteProperty -Name "Display Name" -Value $mailbox.DisplayName
    $mbObj | Add-Member -MemberType NoteProperty -Name "Calendar Name" -Value $inboxstats.name
    $report += $mbObj
}

$report


Das Ergebnis kann auch direkt in eine CSV Datei umgeleitet werden:

FolderNames.ps1 | Export-CSV Foldernames.csv

Viele Grüße Jens

Freitag, 28. Februar 2014

Ausgabe Mitglieder einer Exchange Active Sync Richtlinie

Hallo zusammen,

anbei ein kleiner PowerShell Befehl mit dem alle Benutzer einer spezifischen ActiveSync Richtline in eine CSV Datei ausgegeben werden:

Get-CASMailbox -resultsize unlimited | where {$_.ActiveSyncMailboxPolicy -eq "Default"} | Select-Object Name | Export-Csv "C:\temp\Default.csv"

Viele Grüße, Jens

Mittwoch, 7. August 2013

Erweiterte Ausgabe von Exchange Statistiken

Hallo zusammen,

wir hatten letzte Woche die Anforderung einige Statistiken aus dem Exchange herauszuholen, die ich im Folgenden gerne weitergeben möchte.

Export aller Mailboxen auf dem Exchange Server in die Datei C:\userstats.csv inkl. dem Vor- und Nachname und der Postfachgröße in MB

Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Select-Object @{Name="UserPrincipalName"; Expression={(Get-User $_.Identity.MailboxExchangeLegacyDn).UserPrincipalName}},@{Name="FirstName"; Expression={(Get-User $_.Identity.MailboxExchangeLegacyDn).FirstName}},@{Name="LastName"; Expression={(Get-User $_.Identity.MailboxExchangeLegacyDn).LastName}}, @{Name="TotalItemSize" ; Expression={$_.TotalItemSize.Value.ToMB()}} | Sort-Object -Property TotalItemSize -Descending | Export-CSV –Encoding ‘Unicode’ “c:\userstats.csv” –notype

Export aller Mailboxen inkl. ALLER Email Adressen die diesem Postfach zugeordnet sind. 

Get-Mailbox -ResultSize unlimited | select DisplayNAme, @{Name="EmailAddresses";Expression={$_.EmailAddresses}} |export-csv -path "C:\EmailAdresses.csv"


Export aller Verteilerlisten inkl. der Email Adresse der jeweiligen Verteilerliste und die Email Adressen / Namen der Mitglieder der Verteilerlisten

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


Mit diesem Befehl haben wir uns alle Postfachberechtigungen pro Postfach anzeigen lassen.


$a = get-mailbox 
$a |Get-Mailboxpermission | where { ($_.IsInherited -eq $false) -and -not ($_.User -like “ NT AUTHORITY\SELF”) -and -not ($_.User -like '*Discovery Management*') } | Select Identity, user, AccessRights | fl 

Dienstag, 6. August 2013

Ausgabe der Postfachgröße pro Datenbank

Mit dem folgenden Exchange Powershell Befehl ist es möglich pro Datenbank die Mailbox Größe sortiert nach dieser in MB auszugeben:

Get-MailboxStatistics -Database "%sernam e%\First Storage Group\mailbox database" | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label="TotalItemSize(MB)";expression={$_.TotalItemSize.Value.ToMB()}},ItemCount

%servername% muss durch den jeweiligen lokalen Exchange Server ausgetauscht werden

Dienstag, 22. März 2011

WTS2008R2: Powershell und Servermanager Icon entfernen

Hallo zusammen,

standardmäßig werden ja die Verknüpfungen zur PowerShell und Server Manager in jeder Taskbar angezeigt, anbei das Rezept zum Ausbleden dieser beiden Verknüpfungen guckst du hier, http://social.technet.microsoft.com/Forums/en/winserverTS/thread/976333ab-cac0-417b-b477-64f4fad9d413

Viele Grüße, Jens

Mittwoch, 15. Dezember 2010

Exchange Version auslesen

Hallo zusammen,

seit gestern habe ich eine interessante Info herausbekommen, wie es recht einfach ist die aktuelle Exchange Version via PowerShell abzufragen:

GCM exsetup %{$_.Fileversioninfo}

Die Buildnummern für sämtliche Exchange Versionen sind hier hinterlegt:
http://support.microsoft.com/kb/158530/de

Viele Grüße, Jens

Donnerstag, 9. Dezember 2010

automatisches Setzen von Verzeichnisberechtigungen für öffentliche Ordner

Hallo zusammen,

wir hatten kürzlich die Anforderung Verzeichnisberechtigugnen für öffentliche Ordner zu setzten. Da der Endbenutzer seine öffentliche Ordnerstruktur gerade am Neuausrichten war, kam eine manuelle Änderung der Verzeichnisberechtigungen auf Zuruf somit nicht in Frage. Denn sonst hätten wir jedes Mal wenn er einen neuen öffentlichen Ordner anlegt mit den Verzeichnisberechtigungen bestücken müssen.

Also haben wir das per PowerShell gelöst und als geplante Aufgabe implementiert, guckst du hier:

$PFMailEnabled_Ordnername = Get-MailPublicFolder | Get-PublicFolder | where-object { $_.ParentPath -like "\Contoso\Finance*" } | Select-Object Identity

$PFMailEnabled_Ordnername | Get-MailPublicFolder | add-adpermission -User Contoso\PF_Admin -AccessRights GenericAll

Viele Grüße, Jens

Montag, 27. September 2010

Move-Mailbox Script für Exchange 2003/2007 Migration

Hallo zusammen,

wir hatten im aktuellen Projekt eine Anforderung, haufenweise (weit mehr als 10.000 Benutzer) von Exchange 2003 nach Exchange 2007 zu verschieben. Genauer gesagt durften die Benutzer erst abends verschoben werden um den normalen Geschäftsbetrieb nicht zu beeinträchtigen.
Da wir hier wahrscheinlich extrem viel Zeit gebraucht hätten, haben wir uns ein PowerShell Scritp geschrieben, welches gleich mehrere Dinge auf einmal abdeckt:

  • Verschieben alle Postfächer einer bestimmten Datenbank
  • Verschieben alle Benutzer der bestimmten Datenbank, die sich seit Datum X nicht mehr angemeldet haben

Das hat zum Vorteil, dass wir tagsüber extrem viel Postfächer verschieben konnten, da eben nur die Postfächer einer bestimmten Datenbank verschoben worden sind, deren Benutzer seit dem Datum X nicht mehr am Exchange angemeldet waren. Da wir diese Info nur mittels WMI Abfrage von Exchange 2003 auslesen können ist das Script in diesem Fall etwas länger geworden:


$arr = @() ; Get-WmiObject -ComputerName %EX2003ServerName% -Namespace ROOT\MicrosoftExchangeV2 -Class Exchange_Mailbox Where-Object { $_.StoreName -eq "EX2003DatenbankName" -and $_.LastLogonTime -lt "20100813" } % { $arr += $_.MailboxDisplayName } ; $arr get-mailbox Move-Mailbox -TargetDatabase "EX2007Servername\Ex2007SGName\EX2007Datenbankname" -MaxThreads 12 -IgnorePolicyMatch -confirm:$false

Viele Grüße, Jens