Hier gibt es mal ein paar, für mich nützliche, Powershell-Befehle, die einige Verschachtelungen bieten und in der GUI nicht abgefragt werden können
Automapping für deaktivieren (ab 2010 SP2)
Get-Recipient | ?{$_.recipientTypeDetails -like „RoomMailbox“} | Add-MailboxPermission -User USER -AccessRights FullAccess -AutoMapping $true
TrackingLog per Powershell durchsuchen – Probleme bei der Erweiterung eines Verteilers finden
Get-MessageTrackingLog -EventID „Expand“ -ResultSize Unlimited -Start „20.12.2011 12:00:00“ | where {$_.RecipientStatus -eq „250 2.1.5 RESOLVER.GRP.Expanded; distribution list expanded“ -and $_.RecipientCount -eq „0“}|ft Time*,Sender,Relat*,messagesubject
Anzeigen aller User, die OWA nutzen:
Get-Mailbox| where-object {$_.ProtocolSettings -like „*owa§1*“}|sort-object alias
Anzeigen aller User, die ActiveSync nutzen:
Get-CASMailbox | where-object {$_.ActiveSyncEnabled -like „True“}|sort-object name
Übersicht über ActivSyncDevice mit erfolgreichem Sync in den letzten Wochen
Get-Mailbox -ResultSize:Unlimited | ForEach {Get-ActiveSyncDeviceStatistics -Mailbox:$_.Identity} | Where {$_.LastSuccessSync -gt ’11/30/2011′}|ft Id*,LastSuccessSync*
Anzeigen aller User aus einer bestimmten OU:
Get-Mailbox| where-object {$_.OrganizationalUnit -like „test.local/User „}|sort-object alias
Anzeigen bestimmter Mailboxstatistiken:
Get-MailboxStatistics | ft displayname,*ItemCount,total* -GroupBy StorageLimitStatus
Anzeigen der Mailboxstatistiken in MB:
Get-mailbox -database aegis| Get-MailboxStatistics |ft displayname, @{label=“Total Size (MB)“;expression={$_.TotalItemSize.Value.ToMB()}},@{label=“Items“;expression={$_.ItemCount}}
Anzeigen bestimmter Mailboxstatistiken für User einer definierten OU:
Get-Mailboxstatistics| where-object {$_.storagegroupname -like „user“}|ft displayname,itemcount,totalitemsize
Gesamten Forrest berücksichtigen:
$AdminSessionADSettings.ViewEntireForest = $True
Verschieben der Mailboxen aller User, die in einer bestimmten OU sind (2007 > 2010 new-mailboxmoverequest):
Get-Mailbox| where-object {$_.OrganizationalUnit -like „test.local/User“ -and $_.database -notlike „EX07\User\User“}|move-mailbox -TargetDatabase „EX07\User\User“
Alle Mitglieder aller Verteilerruppen auflisten:
foreach ($group in Get-DistributionGroup) {get-distributiongroupmember $group | ft alias, @{label=’Test1′;expression={$group.name}}}
spezielle Rechte Abfragen
Get-MailboxPermission User| Where-Object {($_.AccessRights -eq ‚Fullaccess‘)}
Get-ADPermission User| Where-Object {($_.ExtendedRights -eq ‚Send-As‘)}
spezielle Rechte Abfragen – DB
Get-Mailbox -Database Test|Add-MailboxPermission -user SG_Mailbox_FullAccess -AccessRights FullAccess
Ergebnisse exportieren:
Get-Mailbox | Export-Csv c:\test.csv
Get-Mailbox | Out-File c:\test.txt
wichtige Operatoren bei Abfragen
-lt — „Kleiner als“
-le — „Kleiner als“ oder „Gleich“
-gt — „Größer als“
-ge — „Größer als“ oder „Gleich“
-eq — „Gleich“
-ne — „Ungleich“
-like – „Gleich“; verwendet Platzhalterzeichen für Musterübereinstimmung
leere Abfrage
-notlike “
Dateioperation – erste Zeile und letztes Zeichen in der Zeile Löschen
$Quelle=“d:\test.txt“
$Ziel=“d:\testneu.txt“
$Datei = Get-Content $Quelle
Get-Content $Quelle| foreach-object {$_.TrimEnd(‚;‘)| Out-File -FilePath $Ziel -append}
get-content $ziel | select -Skip 1 | set-content „$ziel-temp“
move „$ziel-temp“ $ziel -Force
siehe auch:
http://msg-blog.de/2008/05/22/das-kleine-exchange-powershell-1×1/#comments
http://www.msxfaq.de/code/powershell.htm
http://www.microsoft.com/germany/technet/scriptcenter/topics/msh/cmdlets/where-object.mspx