matzewob
Goto Top

Powershell alle Benutzer mit Abwesenheitsnotiz auflisten

Moin zusammen, ich hoffe das mir hier jemand helfen kann.

Ich versuche per Powersehll die Benutzer anzuzeigen welche eine Abwesenheitsnachricht aktiv haben.

Das funktioniert mit
Get-Mailbox | Get-MailboxAutoReplyConfiguration | Where-Object { $_.AutoReplyState -eq "scheduled" }  | fl identity  


Auch super, allerdings bekomme ich dort die Identity zurück in der Form:
Identity : test.local/EXCHANGE/T6/Max Drei

Identity : test.local/EXCHANGE/T6/Max Vier

Identity : test.local/EXCHANGE/T5/Max Neunzehn

Identity : test.local/EXCHANGE/T5/Max Sechs



Ich würde aber gerne den Samaccountnamen haben, weiß jetzt aber nichtmehr weiter. Ich hab schon haufenweise dinge getestet. Habt ihr da einen Tipp für mich wie ich als Ausgabe den Samaccountnamen bekomme?


Besten Dank und einen schönen Tag euch

Content-Key: 461369

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

Printed on: April 16, 2024 at 06:04 o'clock

Mitglied: 139920
Solution 139920 Jun 12, 2019 updated at 08:50:45 (UTC)
Goto Top
get-Mailbox -resultSize Unlimited | Get-MailboxAutoReplyConfiguration | ?{$_.AutoReplyState -in @('Enabled','Scheduled')} | %{(Get-ADUser $_.Identity.DistinguishedName).SamAccountName}  
Member: matzewob
matzewob Jun 12, 2019 at 07:21:56 (UTC)
Goto Top
Scheint das Modul in der Exchange Powershell nicht zu kennen face-sad


ForEach-Object : Die Benennung "Get-ADUser" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens,  
 oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei Zeile:1 Zeichen:89
+ get-Mailbox | Get-MailboxAutoReplyConfiguration | ?{$_.AutoReplyState -eq 'Enabled'} | % <<<< {(Get-ADUser $_.Identity.DistinguishedName).SamAccountName}  
    + CategoryInfo          : ObjectNotFound: (Get-ADUser:String) [ForEach-Object], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Commands.ForEachObjectCommand
Mitglied: 139920
Solution 139920 Jun 12, 2019 updated at 08:50:25 (UTC)
Goto Top
Doch, du musst nur das ActiveDirectory Module laden
Import-Module ActiveDirectory
Oder wenn du das Module nicht aktiviert/installiert hast, nutze einen ADSISearcher.
get-Mailbox -ResultSize Unlimited | Get-MailboxAutoReplyConfiguration | ?{$_.AutoReplyState -in @('Enabled','Scheduled')} | %{([adsi]"LDAP://$($_.Identity.DistinguishedName)").sAMAccountName}  
Member: matzewob
matzewob Jun 12, 2019 updated at 07:39:38 (UTC)
Goto Top
Perfekt, das funktioniert, hab leider noch nicht so viel Kampferfahrung was das Powershellscripting angeht face-smile

Danke erstmal dafür!!! face-smile

Eine Frage noch:

get-Mailbox | Get-MailboxAutoReplyConfiguration | ?{$_.AutoReplyState -eq 'Enabled'} | %{(Get-Mailbox $_.Identity.DistinguishedName).SamAccountName} | Out-File -encoding utf8 -FilePath C:\austausch\oof.txt   

Bringt jetzt noch einen Pipelinefehler

Die Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
    + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
    + FullyQualifiedErrorId : RemotePipelineExecutionFailed

Die Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
    + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
    + FullyQualifiedErrorId : RemotePipelineExecutionFailed

Invoke-Command : Die Eingabe kann nicht geschrieben werden, da keine aktiven Pipelines mehr vorhanden sind.
Bei C:\Users\Administrator.TEST\AppData\Roaming\Microsoft\Exchange\RemotePowerShell\test.local\test-excas.test.local.psm1:13592 Zeichen:29
+             $scriptCmd = { & <<<<  $script:InvokeCommand `
    + CategoryInfo          : InvalidOperation: (:) [Invoke-Command], PSInvalidOperationException
    + FullyQualifiedErrorId : NoMoreInputWrite,Microsoft.PowerShell.Commands.InvokeCommandCommand

Wie kommt der Fehler denn zustande? Die Syntax müsste doch eigdl. richtig sein?
Mitglied: 139920
Solution 139920 Jun 12, 2019 updated at 07:44:59 (UTC)
Goto Top
Setze Get-Mailbox in Klammern dann funktioniert das auch in deinem Fall weil die Mailboxen erst in den Speicher geladen werden und dann erst die AutoReplyAbfragen geschehen, ansonstenm sind das zwei parallele Anfragen auf die selbe Mailbox.
(get-Mailbox) | .........
Du nutzt offensichtlich eine Remote EX Verbindung ohne FULL-Serialization da kommt das mit den parallelen Pipes die sich gegenseitig behindern vor.
Member: matzewob
matzewob Jun 12, 2019 at 07:50:04 (UTC)
Goto Top
Klingt einleuchtend, allerdings bringt das in Klammern leider nicht den erhofften erfolg

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed

ie Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausgeführt werden.
   + CategoryInfo          : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) , PSInvalidOperationException
   + FullyQualifiedErrorId : RemotePipelineExecutionFailed
Mitglied: 139920
Solution 139920 Jun 12, 2019 updated at 08:50:11 (UTC)
Goto Top
Ist ja auch Blödsinn was du da machst!! Schau mal wad du da in der For-Each-Schleife benutzt! Kopiere es von oben richtig, statt Get-ADUser nutzt du Get-Mailbox und das führt zu dem Fehler weil du schon die Mailbox und die AutoReplyConfig in der Pipeline abfragst!
get-Mailbox -ResultSize Unlimited | Get-MailboxAutoReplyConfiguration | ?{$_.AutoReplyState -in @('Enabled','Scheduled')} | %{([adsi]"LDAP://$($_.Identity.DistinguishedName)").sAMAccountName}  
Fertig!
Member: matzewob
matzewob Jun 12, 2019 at 07:57:56 (UTC)
Goto Top
Du hast vollkommen Recht. Du hättest den Facepalm grad hören sollen.
Das mit Get-Mailbox anstelle von Get-ADUser hatte ich vorhin kurz getestet, aber wieder über den Haufen geschmissen, allerdings wohl weiter falsch genutzt.

Nun, gewechselt funktioniert es tadellos! Vielen Dank dir für deine Hilfe! Ich glaube ich bin jetzt wieder etwas schlauer!!
Member: LeeX01
LeeX01 Jun 12, 2019 at 08:29:49 (UTC)
Goto Top
Hi shellschrubber

Zitat von @139920:

Ist ja auch Blödsinn was du da machst!! Schau mal wad du da in der For-Each-Schleife benutzt! Kopiere es von oben richtig, statt Get-ADUser nutzt du Get-Mailbox und das führt zu dem Fehler weil du schon die Mailbox und die AutoReplyConfig in der Pipeline abfragst!
> get-Mailbox | Get-MailboxAutoReplyConfiguration | ?{$_.AutoReplyState -eq 'Enabled'} | %{([adsi]"LDAP://$($_.Identity.DistinguishedName)").sAMAccountName}  
> 
Fertig!

Habe das gerade getestet aber bekomme nicht alle mit aktivem oof. Das weiß ich deswegen so genau weil ich gerade bei einer Kollegin den OOf Text korrigieren musste. face-smile

Grüße
Mitglied: 139920
139920 Jun 12, 2019 updated at 08:55:00 (UTC)
Goto Top
> Zitat von @LeeX01:
Habe das gerade getestet aber bekomme nicht alle mit aktivem oof. Das weiß ich deswegen so genau weil ich gerade bei einer Kollegin den OOf Text korrigieren musste. face-smile
Beachte das bei obigen Skript nur Mailboxen gelistet werden bei dem die Antwort immer aktiviert ist.

Wenn du meinst das auch Mailboxen gelistet bei denen die Antwort mit Zeitraum "geplant" ist, das geht mit einer einfachen Ergänzung im Where Object, das beinhaltet dann sowohl immer als auch zeitlich aktivierte Assistenten :
Get-Mailbox -ResultSize Unlimited | Get-MailboxAutoReplyConfiguration | ?{$_.AutoReplyState -in @('Enabled','Scheduled')} | %{([adsi]"LDAP://$($_.Identity.DistinguishedName)").sAMAccountName}  
oder alternativ auch
Get-Mailbox -ResultSize Unlimited | Get-MailboxAutoReplyConfiguration | ?{$_.AutoReplyState -ne 'Disabled'} | %{([adsi]"LDAP://$($_.Identity.DistinguishedName)").sAMAccountName}  

Hab das oben auch noch mal zusätzlich ergänzt.
Member: LeeX01
LeeX01 Jun 12, 2019 at 08:54:48 (UTC)
Goto Top
Yes jetzt zeigts alle. Merci
Glaube das werd ich bei Gelegenheit mal in Frankys Reporter einbauen
Member: j1m3e84
j1m3e84 Jun 12, 2019 updated at 14:31:08 (UTC)
Goto Top
Hi Leute!

Bin noch nicht sooo der IT Profi, vor allem wenn es um Skripte geht.
Wozu ist das Skript gut?

Wenn ich es richtig verstanden habe, wollt Ihr damit Mailboxen auslesen die den Abwesenheitsstatus aktiv haben/nutzen.

Wofür nutzt Ihr es?

VG und schonmal danke!
Mitglied: 139920
139920 Jun 12, 2019 updated at 17:00:45 (UTC)
Goto Top
Zitat von @j1m3e84:
Wozu ist das Skript gut?
Hast du dir mit
Wenn ich es richtig verstanden habe, wollt Ihr damit Mailboxen auslesen die den Abwesenheitsstatus aktiv haben/nutzen.
schon selbst beantwortet.

Heut ist schon wieder sehr früh Freitag...
Member: j1m3e84
j1m3e84 Jun 13, 2019 at 06:17:39 (UTC)
Goto Top
Zitat von @139920:

Zitat von @j1m3e84:
Wozu ist das Skript gut?
Hast du dir mit
Wenn ich es richtig verstanden habe, wollt Ihr damit Mailboxen auslesen die den Abwesenheitsstatus aktiv haben/nutzen.
schon selbst beantwortet.

Heut ist schon wieder sehr früh Freitag...

ja aber wozu...?
Mitglied: 139920
139920 Jun 13, 2019 updated at 12:08:22 (UTC)
Goto Top
Zitat von @j1m3e84:
ja aber wozu...?
Da gibt es unendlich viele Anwendungsfälle, sollen wir die jetzt alle auflisten???
Jede Firma und User hat andere Skripte und Anforderungen, Abgleich mit Urlaubskalender und und und.