none
Active Directory Abfrage - Useranmeldung am Remotedesktopserver erlaubt

    Frage

  • Ich möchte eine Benutzerliste mit den für mich relevanten Benutzer erstellen. Ich schaffe es aber nicht alle Benutzer, die die Option "Anmeldung bei Remotedesktop-Sitzungshostserver für diesen Benutzer nicht zulassen" in der AD gesetzt haben, herauszufiltern.

    Ein kleiner Ausschnitt aus meinem bisherigen Skript:

    $Filter = '^Administrator$|^_*$|^krbtgt$|^Gast$'
    $userlist = Get-ADUser -Filter * -Properties * | Where-Object {  $_.SamAccountName -notmatch $Filter -and $_.Enabled -like "true" -and  (!($currentDate -ge $_.AccountExpirationDate) -or !($_.AccountExpirationDate) ) }  | select distinguishedName
    
    foreach ($user in $userlist){
    $Property = “allowLogon”
    $userLDAPQuery = [adsi]"LDAP://$user"
    $allowedLogon =$userLDAPQuery.psbase.invokeget($Property)
    Write-Host $allowedLogon
    }

    Ich erhalte jetzt folgenden Fehler, der pro vorhandener User ausgegeben wird:

    Ausnahme beim Aufrufen von "InvokeGet" mit 1 Argument(en):  "Unbekannter Fehler (0x80005000)"
    In C:\Scripte\Userliste erstellen\Get-HostingallowLogon.ps1:8 Zeichen:1
    + $allowedLogon =$userLDAPQuery.psbase.invokeget($Property)
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : DotNetMethodException
     


    Ich konnte bereits die Eigenschaft "allowLogon" erfolgreich abfragen. Das hat aber nur bei den Benutzer per Hand funktioniert, bei den die gefragte Option in der AD gesetzt ist. Also in etwa so(Ich habe den DN unkenntlich gemacht):

    $Property = “allowLogon” $userLDAPQuery = [adsi]"LDAP://CN=_serviceUser,OU=GeheimeOU,DC=DomainController,DC=LOCAL" $allowedLogon =$userLDAPQuery.psbase.invokeget($Property) Write-Host $allowedLogon

    0

    Ich würde mich sehr freuen wenn ihr mir helfen könnt.

    Mit freundlichen Grüßen

    Brash_

    Montag, 11. Juni 2018 13:45

Antworten

  • Ich würde mich sehr freuen wenn ihr mir helfen könnt.

    Na klar doch ;-)

    1. Kosmetik: $Property innerhalb der Schleife zu setzen macht wenig Sinn ;-)

    2. in der Zeile 

    $userLDAPQuery = [adsi]"LDAP://$user"
    

    ist $User ein Objekt, von dem Du die Property "distinguishedName" brauchst. Übergib sie explizit:

    $userLDAPQuery = [adsi]"LDAP://$($user.distinguishedName)"

    3. Bei den Usern, wo es noch nie gesetzt wurde, ist der Wert ja 1. Das kannst Du dir zunutze machen und einfach den Fehler abfragen.

    Das Endergebnis von 1. - 3. würde dann so aussehen:

    $Filter = '^Administrator$|^_*$|^krbtgt$|^Gast$'
    $userlist = Get-ADUser -Filter * -Properties * | Where-Object {  $_.SamAccountName -notmatch $Filter -and $_.Enabled -like "true" -and  (!($currentDate -ge $_.AccountExpirationDate) -or !($_.AccountExpirationDate) ) }  | select distinguishedName
    $Property = “allowLogon”
    foreach ($user in $userlist){
    
        $userLDAPQuery = [adsi]"LDAP://$($user.distinguishedName)"
        try {
            $allowedLogon = $userLDAPQuery.psbase.invokeget($Property)
        } catch {
            $allowedLogon = 1
        }
        Write-Host "$($user.distinguishedName): $allowedLogon"
    }


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    • Als Antwort markiert Brash_ Dienstag, 12. Juni 2018 05:19
    Montag, 11. Juni 2018 15:10

Alle Antworten

  • Ich würde mich sehr freuen wenn ihr mir helfen könnt.

    Na klar doch ;-)

    1. Kosmetik: $Property innerhalb der Schleife zu setzen macht wenig Sinn ;-)

    2. in der Zeile 

    $userLDAPQuery = [adsi]"LDAP://$user"
    

    ist $User ein Objekt, von dem Du die Property "distinguishedName" brauchst. Übergib sie explizit:

    $userLDAPQuery = [adsi]"LDAP://$($user.distinguishedName)"

    3. Bei den Usern, wo es noch nie gesetzt wurde, ist der Wert ja 1. Das kannst Du dir zunutze machen und einfach den Fehler abfragen.

    Das Endergebnis von 1. - 3. würde dann so aussehen:

    $Filter = '^Administrator$|^_*$|^krbtgt$|^Gast$'
    $userlist = Get-ADUser -Filter * -Properties * | Where-Object {  $_.SamAccountName -notmatch $Filter -and $_.Enabled -like "true" -and  (!($currentDate -ge $_.AccountExpirationDate) -or !($_.AccountExpirationDate) ) }  | select distinguishedName
    $Property = “allowLogon”
    foreach ($user in $userlist){
    
        $userLDAPQuery = [adsi]"LDAP://$($user.distinguishedName)"
        try {
            $allowedLogon = $userLDAPQuery.psbase.invokeget($Property)
        } catch {
            $allowedLogon = 1
        }
        Write-Host "$($user.distinguishedName): $allowedLogon"
    }


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    • Als Antwort markiert Brash_ Dienstag, 12. Juni 2018 05:19
    Montag, 11. Juni 2018 15:10
  • Sehr gut. Funktioniert bestens. Vielen Dank!

    Dienstag, 12. Juni 2018 05:20