none
PS Null Wert abfangen RRS feed

  • Frage

  • moin,

    da es bei manchen Usern keinen Wert bei Persmission.user gibt kommt es bei substring zu einem Fehler

    wie löst man so etwas am besten?

    # verbindung zu Exchange herstellen
    $SessionUser = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ex/PowerShell/ -Authentication Kerberos
    Import-PSSession $SessionUser -AllowClobber -DisableNameChecking
    
    $Mailboxen = get-mailbox  -database user -ResultSize unlimited 
    
    
    
    foreach($Mailbox in $Mailboxen){
    
    
        $Permission = Get-MailboxPermission $Mailbox.alias | where {($_.User.length) -eq 12}
    
            $Mailbox.name + "," + $Mailbox.alias + "," + $persmission.user #($Permission.user).Substring(7)
    
    
    
    }


    Chris

    Dienstag, 3. April 2018 07:15

Antworten

  • Hi,

    Am besten mit try / catch.

    Beispiel:

    try {
        $Permission = Get-MailboxPermission $Mailbox.alias | where {($_.User.length) -eq 12}
    }
    catch {
        # error handling
    }

    • Als Antwort markiert -- Chris -- Dienstag, 3. April 2018 07:50
    Dienstag, 3. April 2018 07:42
  • Try/Catch dient eher für unerwartete Fehler, bekannte "Fehler" sind ja keine und sollten auch so behandelt werden:

    if($_.User –ne $null)


    • Bearbeitet Der Suchende Dienstag, 3. April 2018 10:02
    • Als Antwort markiert -- Chris -- Dienstag, 3. April 2018 10:31
    Dienstag, 3. April 2018 10:01

Alle Antworten

  • Hi,

    Am besten mit try / catch.

    Beispiel:

    try {
        $Permission = Get-MailboxPermission $Mailbox.alias | where {($_.User.length) -eq 12}
    }
    catch {
        # error handling
    }

    • Als Antwort markiert -- Chris -- Dienstag, 3. April 2018 07:50
    Dienstag, 3. April 2018 07:42
  • Try/Catch dient eher für unerwartete Fehler, bekannte "Fehler" sind ja keine und sollten auch so behandelt werden:

    if($_.User –ne $null)


    • Bearbeitet Der Suchende Dienstag, 3. April 2018 10:02
    • Als Antwort markiert -- Chris -- Dienstag, 3. April 2018 10:31
    Dienstag, 3. April 2018 10:01
  • jetzt muss ich nochmals kurz nachfragen. war das schon immer so komfortabel, dass $permission.user (das ist ja ein arry/objekt) beim Output schön nebeneinander aufgelistet wird. Mir kommt das diesmal sehr zugute.


    Chris

    Dienstag, 3. April 2018 11:44
  • Try/Catch dient eher für unerwartete Fehler, bekannte "Fehler" sind ja keine und sollten auch so behandelt werden:

    if($_.User –ne $null)

    Solche "Konstruktionen" liefern gern mal unerwartete Ergebnisse.

    Merke: "Wir prüfen niemals gegen $Null"

    Besser wäre das im Zweifel dann so:

    if( -not ( $_.User ))


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 3. April 2018 11:53
  • "Wir prüfen niemals gegen $Null" ???

    Wieso nicht?

    Eine nicht initialisierte Variable enthält immer $Null, also kann man den Init-Status gegen $Null prüfen.
    If (-not $Var) {echo true} => Liefert true wenn $Var nicht $Null aber auch nicht "0" ist.
    if ($Var -ne $Null) {echo true} liefert immer true, wenn die Variable nicht leer ist, also auch bei "0".

    Insofern halte ich (natürlich je nach Anlass) die Prüfung gegen $Null durchaus für relevant.

    Dienstag, 3. April 2018 13:28
  • Stimmt ... ich nehm's zurück. Ich war gedanklich bei $false

    Sorry ...  naja, ich werd eben auch nicht jünger. 

    Wenn Du einverstanden bist, würd ich den Post auch gleich löschen ... wir müssen ja keine falschen Aussagen hier "zementieren".  ;-)


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 3. April 2018 13:45
  • Richtig ...  alles unterhalb meines voreiligen "Einwurfs" kann dann weg ...  woll'n wir?

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 3. April 2018 14:01