rme1985
Goto Top

Powershell string von links abschneiden

Guten Morgen,

ich versuche mit dem Befehl

$user = Get-Mailbox | get-mailboxfolderstatistics


Die Pfade alle Mailboxen auszulesen.

Aus den Pfaden interessiert mich nun das Feld Identity

$user2 = $user.identity


Nun ist es so, dass ich alles vor dem Benutzernamen weghaben möchte. Der Vorteil dabei ist, das letzte Zeichen vor dem Benutzernamen ist ein "\"

contoso.com/Kunden/Mail/Ressourcen/Info-Postfach3\Versions


Es soll also nur info-Postfach3\Versions überbleiben, der restliche Text soll weg.

Das versuche ich jetzt mit

$user3 = $user2.replace("/"," ")  

Aber das geht nicht "keine Methode mit den Namen "replace" enthält....." ist dann die Fehlermeldung.

Auch mit .split komme ich nicht weiter.

Hat jemand von Euch einen Tipp für mich, wie ich da weiterkommen kann?

Herzlichen Dank

Content-ID: 660562

Url: https://administrator.de/contentid/660562

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

147669
147669 08.03.2021 aktualisiert um 12:36:28 Uhr
Goto Top
$user.identity.toString().split("/")[-1]  
RME1985
RME1985 08.03.2021 um 12:37:11 Uhr
Goto Top
Sorry aber funktioniert nicht, dann kommt bei mit System.Object zurück
147669
147669 08.03.2021 aktualisiert um 12:41:21 Uhr
Goto Top
Lass dir mal die Eigenschaften des Typs anzeigen und poste sie hier, habe gerade kein EX zur Hand
$user.identity | fl *
bzw.
$user.identity | gm *
RME1985
RME1985 08.03.2021 um 12:42:36 Uhr
Goto Top
Name MemberType Definition
---------- ----------
Equals Method bool Equals(System.Object obj)
GetBytes Method byte GetBytes()
GetHashCode Method int GetHashCode()
GetType Method type GetType()
RedactPii Method System.Object RedactPii([ref] string raw, [ref] string redacted), System.Object IPiiRedactable.RedactPii([ref] string raw, [ref] string redacted)
ToString Method string ToString()


Bitte schön face-smile
147669
147669 08.03.2021 aktualisiert um 12:54:54 Uhr
Goto Top
Ja klar, das Ergebnis von Get-MailboxFolderStatistics ist a ja ein Array mit sämtlichen Foldern der Mailbox also musst du entweder den Index des Folders angeben oder eben nach Name des Ordners filtern face-wink
$user | ?{$_.Name -eq "Calendar"} | %{$_.Identity.toString().split("/")[-1]}  
Wozu du aber die Identity parsen willst ?? Den Namen der Mailbox bekommst du ja schon mit Get-Mailbox frei Haus geliefert face-wink.
Ist also überflüssig ---> Guckst du hier:
Get-Mailbox -PipelineVariable mailbox | Get-MailboxFolderStatistics | select @{n='Mailbox';e={$mailbox.Name}},FolderPath
Doskias
Doskias 08.03.2021 um 12:48:45 Uhr
Goto Top
Moin

Also folgendes:
$test="Doskias"  
$test.Substring(3)
$test.Substring(0,3)
$test.Substring(3,2)

Zeile 2 gibt dir kias zurück
Zeile 3 gibt dir Dos
Zeile 4 gibt dir ki zurück

mit $user2.substring(x), wobei x die Anzahl der auszulassenden Zeichen ist, solltest du weiterkommen.

Gruß
$test .... äh Doskias ;)
RME1985
RME1985 08.03.2021 um 12:55:36 Uhr
Goto Top
Ich wollte die Ausgabe mit Get-MailboxFolderPermission User:\Ordner und den Berechtigungen weiter verarbeiten.

Su sagtest, die Mailbox bekomme ich geliefert wo denn das?

Im Array steht die Mailbox so nicht drin.

Ich wollte mit das jetzt einfach machen und die Identity nutzen.

ist mein Gedankengang da Falsch?
147669
Lösung 147669 08.03.2021 aktualisiert um 12:58:07 Uhr
Goto Top
Guckst du mein oben ergänztes Beispiel face-wink...
Im Array steht die Mailbox so nicht drin.
Die Mailbox kannst du ganz einfach über die Pipeline drücken und nutzen face-wink.
Get-Mailbox -PipelineVariable mailbox | Get-MailboxFolderStatistics | select @{n='Mailbox';e={$mailbox.Name}},FolderPath  
Das String Gedröhns ist also vollkommen überflüssig!
RME1985
RME1985 08.03.2021 um 12:56:30 Uhr
Goto Top
Du das hilft leider gar nicht, da der Ordnerpfad ja immer abweichend ist ;)

ich muss etwas haben, dass alles vor dem / abschneidet.
RME1985
RME1985 08.03.2021 um 12:58:39 Uhr
Goto Top
Ja genau das hier habe ich gesucht face-smile

Get-Mailbox -PipelineVariable mailbox | Get-MailboxFolderStatistics | select @{n='Mailbox';e={$mailbox.Name}},FolderPath

Habe nur noch nie mit PipelineVariablen gearbeitet.

Jetzt muss ich nur noch den / in \ in der Folderpath umdrehen und dann passt das doch face-smile

Super vielen Dank face-smile
147669
Lösung 147669 08.03.2021 aktualisiert um 13:07:14 Uhr
Goto Top
Zitat von @RME1985:
Jetzt muss ich nur noch den / in \ in der Folderpath umdrehen und dann passt das doch face-smile
Brauchst du nicht wenn du direkt mit Get-MailboxFolder in der Pipe arbeitest face-wink
Get-Mailbox -PipelineVariable mailbox | select @{n='Mailbox';e={$mailbox.Name}},@{n='Permissions';e={$mailbox | Get-MailboxFolder -Recurse | Get-MailboxFolderPermission | select FolderName,User,AccessRights}}  
RME1985
RME1985 08.03.2021 um 19:33:33 Uhr
Goto Top
Wofür ist denn dieser letzte Befehl gut?

Was ich gerade entdeckt hab, wir haben bei den Skripten ein weiteres Problem.

Wenn ein User Unterorder hat z.B. Posteingang\Intern oder sowas dann erfasst das Skript das nicht.