0

Ich muss Exchange-2010-Aufbewahrungsrichtlinie für Postfächer automatisieren, die innerhalb von 7 Tagen erstellt wurden. Aber ich muss auch nicht-US-basierte Server ausschließen, da diese von IT in Übersee verwaltet werden.Powershell-Rückgabepostfächer, die innerhalb von 7 Tagen erstellt wurden und sich auf dem angegebenen Server befinden.

Dies ist das Vorwort zu meinem Skript, das den Austausch von Verbindungen ohne menschliche Interaktion ermöglicht. So kann ich das in Windows einplanen.

If (Test-Path C:\temp\mycred.xml) {$UserCredential = Import-CliXML C:\temp\mycred.xml} 
else{ 
Get-Credential | Export-CliXml C:\temp\mycred.xml 
$UserCredential = Import-CliXML C:\temp\mycred.xml} 

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://munprdcasht04.exchange.com/PowerShell/ -Authentication Kerberos -Credential $UserCredential 
import-PSSession $Session 

Dies ist meine aktuellen Code-Postfächer innerhalb von 7 Tagen erstellt zurückzukehren

Get-Mailbox -ResultSize Unlimited| Where-Object { 
($_.WhenCreated –ge ((Get-Date).Adddays(-7)))} | 
ft -auto Name,WhenCreated,Retentionpolicy,servername 

Dies funktioniert für mich, aber wenn ich einen Operator hinzufügen Postfächer auf bestimmten Servern zu beschränken, die abgeschlossen ist Befehl tut, aber nicht drucken irgendwelche Ergebnisse, also nehme ich an, dass es 0 übereinstimmende Aufzeichnungen gibt.

Get-Mailbox -ResultSize Unlimited| Where-Object { 
    ($_.WhenCreated –ge ((Get-Date).Adddays(-7))) -and 
    ($_.ServerName -contains "munprdmbxa") | 
    ft -auto Name,WhenCreated,Retentionpolicy,servername 

Ich habe noch nicht sah in tatsächlich ermöglicht die Aufbewahrungsrichtlinie, wie ich gerade versuche, meine Zieldaten zurück vor dem Tauchen in das Abenteuer. Ich schätze jede Hilfe.

+1

-contains würde genaue Übereinstimmung des gesamten Server-Namens erfordern. '-like" * munprdmbxa * "' könnte einfacher zu handhaben sein –

+0

@Kai Zhao Das hat funktioniert !! Danke. Wenn Sie dies in eine Antwort eingeben, markieren Sie es als vollständig. – mttp1990

Antwort

1

-contains in Powershell gibt True nur zurück, wenn eine Zeichenfolge genau übereinstimmt. Es verhält sich eher wie -eq in einer einzelnen Zeichenfolge, hat aber auch die Fähigkeit festzustellen, ob ein Element in einer Menge enthalten ist.

beispiels

$test = "aaa" 
$test -contains "aaa" 

$test = "aaa","bbb","ccc" 
$test -contains "aaa" 

Die beiden oben zurückkehren würde True, aber wäre es nicht wahr zurückgeben für eine Unterkette und Wild Card nicht mit ihm arbeiten.

$test = "aaa.domain.com" 
$test -contains "aaa" 

$test = "aaa.domain.com" 
$test -contains "*aaa*" 

zurückkehren würde False

Wenn also der Servername FQDN mit Domain-Suffix etc, würde die Zeichenfolge keine exakte Übereinstimmung sein. Wenn Sie -like Betrieb stattdessen verwenden, können Sie eine Teilmenge der Zeichenfolge innerhalb der gegebenen Zeichenkette mit Wildcard überein:

zB:

$test = "aaa.domain.com" 
    $test -like "*aa*" 

    $test = "aaa.domain.com" 
    $test -like "aa*.com" 

Werden beide Rück True

So verwenden -like Betreiber würde eher Vermeiden Sie falsch negative Ergebnisse.