Search code examples
powershellpowershell-3.0

Powershell script : read and insert value from txt file (on 30+ entry)


Sorry, i'm noob for powershell, but want to automate the following:

Got a powershell script: import-module ActiveDirectory $username = Read-Host 'Please enter Username!' Get-ADPrincipalGroupMembership $username | Get-ADGroup -Properties * | select name, description

When run script i enter the username and it give me a list which group the user is member of.

I had a big 50-100 list user list which obtained with Get-aduser -filter * -properties Name | select-object Name | out-file -filepath .\userlist.txt command and saved to a text file. Is there any way to read every user 1 by 1 and auto fill the username field, then save the output to a text file? when finished with the 1st, script rerun and read the next value.

Is that possible?

Thank you


Solution

  • Here's a few snippets to help you put together what you need.

    Get all users from a file containing only usernames

    [string[]]$allUsers = Get-Content -Path '.\FileWithUsernames.txt'
    

    Get all active users from AD

    [string[]]$allUsers = Get-AdUser -Filter "enabled -eq 'True'" | Select-Object -ExpandProperty 'SAMAccountName'
    

    Loop through users getting the users' group info / doing something with it

    foreach ($user in $allUsers) {
        Get-AdUser -Identity $user -Properties 'memberof' | 
            Select-Object -ExpandProperty 'memberof' |
            ForEach-Object {
                ([PSCustomObject]@{ Username=$user; GroupDN = $_})
            } |
            Export-Csv -Path '.\AllActiveUsersGroups.csv' -Append -Delimiter ',' -Encoding 'Utf8' #-NoTypeInformation #only include the -notypeinfomrmation parameter if using PS rather than PWSH)
    }