Powershell - Liste von Usern einlesen und dann Gruppen ausgeben
Hallo zusammen
ich bei ein Änfäger bezüglich powershell usw
Ich versuche mein Script so zu bauen , das es von einer TXT datei die Nutzer einliest
Leider ist das Ergebniss bescheiden !
Es wird zwar eine Liste mit gruppen ausgeworfen , aber leider in der User member ist !
Am besten wäre wenn das Ergebniss auch in einen Datei geschrieben würde !
Danke für die Hilfe
ich bei ein Änfäger bezüglich powershell usw
Ich versuche mein Script so zu bauen , das es von einer TXT datei die Nutzer einliest
$Users = get-content C:\Powershell\Userlist.txt
foreach ($User in $Users)
{
$User = $(try {Get-ADUser $username} catch {$null})
If ($User -eq $Null) {
write-host -foregroundcolor red User $username does not exist.
return}
Else {
Get-ADPrincipalGroupMembership $username | select name}
Es wird zwar eine Liste mit gruppen ausgeworfen , aber leider in der User member ist !
Am besten wäre wenn das Ergebniss auch in einen Datei geschrieben würde !
Danke für die Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 666580
Url: https://administrator.de/forum/powershell-liste-von-usern-einlesen-und-dann-gruppen-ausgeben-666580.html
Ausgedruckt am: 23.12.2024 um 15:12 Uhr
11 Kommentare
Neuester Kommentar
Hallo,
formulier doch deine Frage etwas genauer. Du schreibst am Ende, dass eine Liste mit Gruppen ausgeworfen wird in der der User Mitglied ist. ist es nicht genau das was du wolltest? Verstehe daher nicht wo genau dein Problem ist.
Außerdem bitte Code-Tags benutzen, das macht das lesen einfacher bzw. man kann dir die Zeile Sagen.
Umleitung indie Datei geht mit
Gruß
Doskias
formulier doch deine Frage etwas genauer. Du schreibst am Ende, dass eine Liste mit Gruppen ausgeworfen wird in der der User Mitglied ist. ist es nicht genau das was du wolltest? Verstehe daher nicht wo genau dein Problem ist.
Außerdem bitte Code-Tags benutzen, das macht das lesen einfacher bzw. man kann dir die Zeile Sagen.
Umleitung in
Get-ADPrincipalGroupMembership $username | select name} >> Dateipfad/Name
Gruß
Doskias
Zitat von @gismox2708:
$Users = get-content C:\Powershell\Userlist.txt
foreach ($User in $Users)
{
$User = $(try {Get-ADUser $username} catch {$null})
If ($User -eq $Null) {
write-host -foregroundcolor red User $username does not exist.
return}
Else {
Get-ADPrincipalGroupMembership $username | select name}
Leider ist das Ergebniss bescheiden !
$Users = get-content C:\Powershell\Userlist.txt
foreach ($User in $Users)
{
$User = $(try {Get-ADUser $username} catch {$null})
If ($User -eq $Null) {
write-host -foregroundcolor red User $username does not exist.
return}
Else {
Get-ADPrincipalGroupMembership $username | select name}
Leider ist das Ergebniss bescheiden !
Kein Wunder! Du überschreibst das Objekt $user aus deiner For-Each mit dem Result.
versuche es mal so:
#Get-WindowsCapability -Online | Where-Object {$_.Name -like "*ActiveDirectory.DS-LDS*"} | Add-WindowsCapability -Online
$Users = get-content "C:\Powershell\Userlist.txt"
$prinzipales = @()
foreach ($User in $Users) {
$Result = $(try {Get-ADUser $User} catch {$null})
If ($Result -eq $Null) {
write-host -foregroundcolor red User $User does not exist.
return
}
Else {
$ADResult = Get-ADPrincipalGroupMembership $Result | select name
$PSReturn_ = New-Object -TypeName psobject
$PSReturn_ | Add-Member -MemberType NoteProperty -Name User -Value $User
$PSReturn_ | Add-Member -MemberType NoteProperty -Name Groups -Value $ADResult
$prinzipales += $PSReturn_
}
}
Es wird zwar eine Liste mit gruppen ausgeworfen , aber leider in der User member ist !
Verstehe nicht ganz was du meinst. Natürlich ist der user aus der abgefragten Gruppe Member dieser Gruppe.
Am besten wäre wenn das Ergebniss auch in einen Datei geschrieben würde !
$prinzipales | Set-Content -Path "C:\Powershell\Resultlist.txt" -Force
Zitat von @gismox2708:
Super erstmal vielen dank !
Aber ind er Datei steht dann nur
@{User=meiers; Groups=System.Object}
@{User=horstr; Groups=System.Object}
Und nicht in welchen gruppen die User sind !
Super erstmal vielen dank !
Aber ind er Datei steht dann nur
@{User=meiers; Groups=System.Object}
@{User=horstr; Groups=System.Object}
Und nicht in welchen gruppen die User sind !
Na dann so:
$Users = get-content "C:\Powershell\Userlist.txt"
$prinzipales = @()
foreach ($User in $Users) {
$Result = $(try {Get-ADUser $User} catch {$null})
If ($Result -eq $Null) {
write-host -foregroundcolor red User $User does not exist.
return
}
Else {
$ADResult = Get-ADPrincipalGroupMembership $Result | select name
$PSReturn_ = New-Object -TypeName psobject
$PSReturn_ | Add-Member -MemberType NoteProperty -Name User -Value $User
$groups = ""
foreach ($adr in ($ADResult).name)
{
$groups += "$adr | "
}
$PSReturn_ | Add-Member -MemberType NoteProperty -Name Groups -Value ($groups.TrimEnd(' |'))
$prinzipales += $PSReturn_
}
}
#$prinzipales | Convert Set-Content -Path "C:\Powershell\Reslist.txt" -Force
$prinzipales | Export-Csv "C:\Powershell\Reslist.csv" -NoTypeInformation -Delimiter ';' -Force
Ich würde es gleich so schreiben
Gruß w.
get-content C:\Powershell\Userlist.txt | ?{Get-ADUser -Filter {SamAccountName -eq $_}} | select @{n='SamAccountName';e={$_}},@{n="Groups";e={(Get-AdPrincipalGroupMembership $_ | select -Expand Name) -join ","}} | export-csv .\users_membership.csv -Delimiter ";" -NoType -Encoding UTF8
Zitat von @148121:
Ich würde es gleich so schreiben
Gruß w.
Ich würde es gleich so schreiben
> get-content C:\Powershell\Userlist.txt | ?{Get-ADUser -Filter {SamAccountName -eq $_}} | @{n='SamAccountName';e={$_}},@{n="Groups";e={(Get-AdPrincipalGroupMembership $_ | select -Expand Name) -join ","}} | export-csv .\users_membership.csv -Delimiter ";" -NoType -Encoding UTF8
>
Schöner Einzeiler! Als ISE-Noob würde ich da aber auf das F9-Problem hinweisen 😜
Uups my fault, ist korrigiert, vor lauter Expressions das "select" vergessen.