Help with Get-ADUser PowerShell Command querying for TsAllowLogon

Greetings!

I'm trying to query users from an AD OU specifically looking for attribute TsAllowLogon.  My attempts at running a command in PowerShell have been unsuccessful.  Any help were I'm messing up this command would be greatly appreciated.  Usually it just generates an empty CSV file.

Get-ADUser -ResultSetSize $null -SearchBase $ou -SearchScope SubTree -LdapFilter "(TsAllowLogon=$False)" | Select-Object Name,samAccountName | Export-Csv -NoTypeInformation $("C:\results\" + $name + "TsAllowLogonFalse.csv")

Open in new window

tonydotigrAsked:
Who is Participating?
 
footechCommented:
This will return all users in an OU that have the box checked for "Deny this user permissions to log on to Remote Desktop Session Host server".  It will output their name and sAMAccountName into a single .CSV.
Import-Module ActiveDirectory
$out = @()
$searchOU = "OU=Users,OU=whatever,DC=domain,DC=com"
(Get-ADuser -filter * -searchbase $searchOU -properties DistinguishedName) | ForEach `
  {
    $userDN = $_ | Select -expandProperty DistinguishedName
    $user = [adsi]"LDAP://$userDN"
    If (($user.psbase.invokeget("AllowLogon")) -eq "0" )
    {
      $Properties = @{
        Name = "$($_.Name)"
        sAMAccountName = "$($_.sAMAccountName)"
      }
      $custom = New-Object PSObject -property $Properties
      $out += $custom
    }
  }
$out | Select Name,sAMAccountName | Export-Csv -NoTypeInformation "C:\results\TsAllowLogonFalse.csv"

Open in new window

0
 
footechCommented:
I don't know about the ldapfilter syntax, but this return the right users for me.
Get-ADuser -filter {msTSAllowLogon -eq $true}

Open in new window

0
 
coraxalCommented:
This will get you users with the msTSAllowLogon not set
Get-ADuser -Properties msTSAllowLogon -Filter { mstsallowlogon -notlike "*" } -SearchBase $ou -SearchScope SubTree -ResultSetSize $null |
Select-Object Name,samAccountName |
Export-Csv -NoTypeInformation $("C:\results\" + $name + "TsAllowLogonFalse.csv")

Open in new window

And this will get you users with the msTSAllowLogon set to $false
Get-ADuser -Properties msTSAllowLogon -Filter { mstsallowlogon -eq $false } -SearchBase $ou -SearchScope SubTree -ResultSetSize $null |
Select-Object Name,samAccountName |
Export-Csv -NoTypeInformation $("C:\results\" + $name + "TsAllowLogonFalse.csv")

Open in new window

Obviously you can combine the filter if you want to get both user types exported
-Filter { mstsallowlogon -notlike "*" -or mstsallowlogon -eq $false }

Open in new window

0
How do you know if your security is working?

Protecting your business doesn’t have to mean sifting through endless alerts and notifications. With WatchGuard Total Security Suite, you can feel confident that your business is secure, meaning you can get back to the things that have been sitting on your to-do list.

 
tonydotigrAuthor Commented:
The command runs, but does not return an results with "$true" or "$false"...
0
 
tonydotigrAuthor Commented:
mstsallowlogon -eq $false

Open in new window

does not return results either way (even with true)
mstsallowlogon -notlike "*" 

Open in new window

seems to return all records

Hmmmm
0
 
footechCommented:
I found the right syntax for the LDAPfilter is
Get-ADUser -ldapfilter "(msTSAllowLogon=FALSE)"
In this case "FALSE" (or "TRUE") is case-sensitive.  So changing your supplied command to
Get-ADUser -ResultSetSize $null -SearchBase $ou -SearchScope SubTree -LdapFilter "(msTsAllowLogon=FALSE)" | Select-Object Name,samAccountName | Export-Csv -NoTypeInformation $("C:\results\" + $name + "TsAllowLogonFalse.csv")

Open in new window

works for me.
0
 
coraxalCommented:
Can you edit this line
Select-Object Name,samAccountName

to this:

Select-Object Name,samAccountName,msTSAllowLogon

Open in new window

Run the command again, and take a look at the value of msTSAllowLogon. Works for me.
0
 
tonydotigrAuthor Commented:
Footech:
The command you supplies runs but nothing is returned...


Coraxal:
Nothing is return when I look at the msTsAllowLogon parameter.  I'm guessing there should be?
0
 
footechCommented:
If that's true, then the problem must be with your environment or I'm misunderstanding what you want.  Do any of your users have the attribute set to FALSE?  If the attribute is not set, then accordingly the file should be blank.

What exactly are you trying to check?  Whether the attribute is set to FALSE, whether it is set at all, or what?
0
 
tonydotigrAuthor Commented:
Trying to see what users have the option selected (Remote Desktop Service Profile > Deny this user permissions to log on to Remote Desktop Session Host server).  

Results come back blank when set to either TRUE or FALSE.
0
 
footechCommented:
OK, we're talking about a different attribute here.  From what I recall, that doesn't exist as an actual attribute of a user in AD, but is pulled from some other source.  You can access it through the userParameters attribute which is basically a blob of information that includes the TerminalServicesHomeDirectory and TerminalServicesProfilePath.  I'm not certain how I'd access it using straight PowerShell (I know it involves using the adsi accelerator).  From what I understand, the Quest cmdlets include the functionality to change this ( http://ss64.com/ps/set-qaduser.html ), but I don't use them so I can't give you specific guidance.  If I have time I'll look into the straight PS method.
0
 
tonydotigrAuthor Commented:
Thanks footech... really appreciate it!!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.