Exchange PowerShell Namensvariable

Ex4mp1e

Lieutenant
Registriert
Mai 2016
Beiträge
515
Moin, wenn ich in der Exchange PowerShell die Variable "$_.Name" verwende, dann kommt dabei ein Name im Format "Max Mustermann" raus.
Wie kann ich es lösen, dass an der Stelle der Variable stattdessen "MMustermann" steht`?
Mit
Code:
$global:shortname = "Befehl"
könnte ich ja eine Variable definieren, so dass ich statt "$_.Name" "$_.shortname" verwende, nur müsste ich eben für "Befehl" einen Befehl einsetzen, der aus "$._Name" eben den kürzeren Namen bastelt...
Kann mir jemand verraten, wie das geht?
 
Lass dir doch mit dem folgendem Befehl einmal das Objekt ausgeben, dann sollst ja die benötigte Eigenschaft finden. ;)

Code:
Write-Host ($_ | Format-List | Out-String)
 
Bei dem Befehl passiert leider nichts?

(Und wenn ich aus "$_" ein "$_.Name" mache, ebenfalls nicht, falls das als kreative Eigenleistung gefordert war ^^)
 
Mh...verstehe nicht so ganz wieso nicht. :(
 
Also mein gesamter Befehl sieht so aus:

Code:
Get-DistributionGroupMember -Identity "Sicherheitsgruppe" | foreach {Add-MailboxFolderPermission -Identity "$($_.Name):\Kalendar" -User "Sicherheitsgruppe" -AccessRights Reviewer}


Wenn ich jetzt deinen Befehl ein wenig modifiziere, und ihn wie folgt umbastel:
Code:
Write-Host (Get-DistributionGroupMember -Identity "Sicherheitsgruppe" $_ | Format-List | Out-String)
dann bekomme ich zumindest folgende Fehlermeldung:
Code:
Es wurde kein Positionsparameter gefunden, der das Argument "$null" akzeptiert.
       + CategoryInfo      : InvalidArgument: (:) [Get-DistributionGroupMember], ParameterBindingException



Edit: Oh Mann. Ich hab das Problem... Also mein mein eigentliches Problem.
Ob "Max Mustermann" oder "MMustermann" ist Exchange scheinbar herzlich egal.
Man sollte einfach mal "Kalender" statt "Kalendar" schreiben...
 
Zuletzt bearbeitet:
foreach ist ein Keword, was du nicht pipen kannst. Was du meinst, ist ForEach-Object, mit dem Alias %. $_ ist hierbei immer der aktuelle Wert des Schleifendurchlaufs.

Also entweder änderst du es in foreach
Code:
foreach( $member in (Get-DistributionGroupMember -Identity "Sicherheitsgruppe") )
{
  Add-MailboxFolderPermission -Identity "$($member.Name):\Kalendar" -User "Sicherheitsgruppe" -AccessRights Reviewer
}
oder ins Cmdlet ForEach-Object
Code:
Get-DistributionGroupMember -Identity "Sicherheitsgruppe" | ForEach-Object {
  Add-MailboxFolderPermission -Identity "$($_.Name):\Kalendar" -User "Sicherheitsgruppe" -AccessRights Reviewer
}
ab.
 
Zurück
Oben