Frage

Ich versuche, den folgenden PowerShell-Befehl auf meinem Exchange 2010 SP1-Server auszuführen:

$colItems = Get-Mailbox -Filter {office -eq "ExportPST"}
ForEach($objItem in $colItems)
{
New-MailboxExportRequest -Mailbox $objItem -FilePath \\server\share$\"$objItem".pst
}

Wenn ich das mache, erhalte ich die Fehlermeldung:

Es konnte keine geeignete Datenbank zum Speichern dieser Anfrage gefunden werden.+ KategorieInfo:Ungültiges Argument:(Domain.com .... D/John Doe: MailboxOrilUSerIdParameter) [New-M AilboxexporTrequest], MailboxDatabase ... ManentException + vollständigqualifiedErrorid:9322CB6D,Microsoft.Exchange.Management.RecipientTasks.NewMailboxExportRequest

Ich versuche, meine AD-Benutzer zu durchsuchen, Benutzer zu finden, die die Zeichenfolge ExportPST im Office-Feld haben, und dann den Befehl New-MailboxExportRequest zu exportieren, um den gesamten Inhalt des Postfachs des Benutzers für jeden zurückgegebenen Benutzer in eine PST-Datei zu exportieren.

Wenn ich oben einen Write-Host hinzufüge, sind die ausgegebenen Werte korrekt:

New-MailboxExportRequest -Mailbox jdoe -FilePath " \\server\share$\John Doe.pst"

Die Ausgabe enthält auch ein zusätzliches Leerzeichen zwischen -FilePath " und \, was meiner Meinung nach ein Problem verursachen wird, sobald das oben genannte Problem behoben wurde. Gibt es eine Möglichkeit, Zeichenfolgen zu kontaktieren, ohne dass dieses zusätzliche Leerzeichen hinzugefügt wird?

Danke,

Matt

War es hilfreich?

Lösung

Ich denke, dein Zitat ist ein bisschen aus.Doppeltitelierte String-Erweiterung funktioniert, wenn Sie die Zeichenfolge vollständig umgeben, nicht nur den variablen Teil.

generasacodicetagpre.

Hier ist eine alternative Syntax, die .NET String-Formatierung / Austausch:

generasacodicetagpre.

Um die Fehlerbehebung / Debugging einfacher vorzunehmen, können Sie den Dateipfad zu einer Variablen zuweisen und die Variable anschließend in den Parameter generasAdicetagcode übergeben.Auf diese Weise können Sie genau sehen, welcher Wert eingeleitet wird.

generasacodicetagpre.

Andere Tipps

Wenn $objItem ist eine Zeichenfolge, die Sie tun können:

-FilePath "\\server\share$\${objItem}.pst"

Sie können folgendermaßen feststellen, ob es sich um eine Zeichenfolge handelt:

$objItem.GetType().FullName

Auch wenn es sich nicht um eine Zeichenfolge handelt, funktioniert es möglicherweise trotzdem, wenn die Objekte vorhanden sind ToString() Die Methode stellt den Wert bereit, den Sie benötigen, da PowerShell die automatisch aufruft ToString() Methode des Objekts und fügen Sie es in Ihren String ein.Wenn Ihnen dies also den gewünschten Wert bietet: $objItem.ToString() dann können Sie es auch verwenden.Wenn es jedoch eine Eigenschaft wie $objItem.Name gibt, auf die Sie zugreifen müssen, müssen Sie eine Zeichenfolgenverkettung, einen Unterausdruck oder eine .NET-Zeichenfolgenformatierung verwenden.

  • Verkettung: -FilePath ("\\server\share$\" + $objItem.Name + ".pst")
  • Unterausdruck: -FilePath "\\server\share$\$($objItem.Name).pst"
  • .NET-String-Formatierung: -FilePath ("\\server\share$\{0}.pst" -f $objItem.Name)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top