Powershell export in csv, Formatierung passt nicht
Hallo Leute,
ich bin mal wieder zu behindert ein kleine Skript zu schreiben.....
Ich habe eine Gruppe in der sind alle User drin, die ein RD-Gateway nutzen dürfen.
Dann habe ich viele Gruppen die den RDP Zugriff steuern. Ein User kann in einer oder auch mehreren Gruppen sein.
Nun möchte ich eine Excel Datei bauen (CSV export) damit man eine Übersicht hat, wer wohin zugreifen darf.
Soweit so gut. Nach langem Try&Error hab ich da was gebaut. Aber die Ausgabe passt noch nicht.
Eigentlich stelle ich mir die Ausgabe so vor:
Benutzername;NameGruppe1;NameGruppe2;NameGruppe3;
Benutzername;NameGruppe1;
Benutzername;NameGruppe1;NameGruppe2;
...
Was haut er mir in die Datei
Benutzername;
NameGruppe1;NameGruppe2;NameGruppe3;Benutzername;
NameGruppe1;NameGruppe2;Benutzername;
NameGruppe1;Benutzername;
NameGruppe1;NameGruppe2;
...
In der ersten Ausgabezeile geht´s also schon schief und er fängt ne neue Zeile an, wo ich eigentlich erwarte, dass er die Gruppennamen noch anhängt und erst nach den Gruppennamen eine neue Zeile (dem nächsten User) beginnt.
Wäre nett wenn mir jemand auf die Sprünge helfen könne.
Sollte es eine bessere/einfachere lösung für mein Vorhaben geben, nur her damit.
VG
KangarooJack
ich bin mal wieder zu behindert ein kleine Skript zu schreiben.....
Ich habe eine Gruppe in der sind alle User drin, die ein RD-Gateway nutzen dürfen.
Dann habe ich viele Gruppen die den RDP Zugriff steuern. Ein User kann in einer oder auch mehreren Gruppen sein.
Nun möchte ich eine Excel Datei bauen (CSV export) damit man eine Übersicht hat, wer wohin zugreifen darf.
Soweit so gut. Nach langem Try&Error hab ich da was gebaut. Aber die Ausgabe passt noch nicht.
Eigentlich stelle ich mir die Ausgabe so vor:
Benutzername;NameGruppe1;NameGruppe2;NameGruppe3;
Benutzername;NameGruppe1;
Benutzername;NameGruppe1;NameGruppe2;
...
Was haut er mir in die Datei
Benutzername;
NameGruppe1;NameGruppe2;NameGruppe3;Benutzername;
NameGruppe1;NameGruppe2;Benutzername;
NameGruppe1;Benutzername;
NameGruppe1;NameGruppe2;
...
In der ersten Ausgabezeile geht´s also schon schief und er fängt ne neue Zeile an, wo ich eigentlich erwarte, dass er die Gruppennamen noch anhängt und erst nach den Gruppennamen eine neue Zeile (dem nächsten User) beginnt.
Wäre nett wenn mir jemand auf die Sprünge helfen könne.
Sollte es eine bessere/einfachere lösung für mein Vorhaben geben, nur her damit.
VG
KangarooJack
Clear-Host
Import-Module activedirectory
$csv = "C:\Script\Auswertung\Auswertung.txt"
Get-ADGroupMember -Identity "Gateway-User" | Get-ADUser -Properties Surname, GivenName, SamAccountName, Department, Enabled | Select-Object Surname, GivenName, SamAccountName, Department | Sort-Object Department |
ForEach-Object {
try {
$Membership = Get-ADPrincipalGroupMembership -Identity $_.SAMAccountName | Select-Object Name | Where-Object { $_.name -like 'Gruppe*-User'}
if ($Membership -ne $null) {
$Username = $_.SamAccountName+";"
# Write-Host $Username
$Username | Out-File -FilePath $csv -append -Encoding utf8
foreach ($item in $Membership) {
$String = $item.Name.Substring(7)
$Computername = $String.Trim("-User")
$Ausgabe = "$Computername;"
#Write-Host $Ausgabe
$Ausgabe | Out-File -FilePath $csv -append -NoNewLine -Encoding utf8
}
}
}
catch {
{1:<#Do this if a terminating exception happens#>}
}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6641097782
Url: https://administrator.de/contentid/6641097782
Ausgedruckt am: 25.11.2024 um 11:11 Uhr
5 Kommentare
Neuester Kommentar
Hi,
versuche es so:
Insgesamt würde ich das ganze Skript etwas überarbeiten, leider fehlt mir gerade die Zeit
versuche es so:
Clear-Host
Import-Module activedirectory
$csv = "C:\Script\Auswertung\Auswertung.txt"
Get-ADGroupMember -Identity "Gateway-User" | Get-ADUser -Properties Surname, GivenName, SamAccountName, Department, Enabled | Select-Object Surname, GivenName, SamAccountName, Department | Sort-Object Department |
ForEach-Object {
try {
$Membership = Get-ADPrincipalGroupMembership -Identity $_.SAMAccountName | Select-Object Name | Where-Object { $_.name -like 'Gruppe*-User'}
if ($Membership -ne $null) {
$Username = $_.SamAccountName+";"
# Write-Host $Username
$Username | Out-File -FilePath $csv -append -Encoding utf8 -NoNewLine
foreach ($item in $Membership) {
$String = $item.Name.Substring(7)
$Computername = $String.Trim("-User")
$Ausgabe = "$Computername;"
#Write-Host $Ausgabe
$Ausgabe | Out-File -FilePath $csv -append -NoNewLine -Encoding utf8
}
"" | Out-File -FilePath $csv -append -Encoding utf8
}
}
catch {
{1:<#Do this if a terminating exception happens#>}
}
}
Insgesamt würde ich das ganze Skript etwas überarbeiten, leider fehlt mir gerade die Zeit
Zitat von @Kangaroojack:
Wenn ich bei der Ausgabe von $Username einfach wie von dir vorgeschlagen ein -NoNewLine hinzufüge, dann rotzt er mir alles in eine Zeile, auch alle folgenden User/Gruppennamen.
Also:
Benutzername;NameGruppe1;NameGruppe2;NameGruppe3;Benutzername;NameGruppe1;NameGruppe2;Benutzername;NameGruppe1;NameGruppe2;NameGruppe3;Benutzername;NameGruppe1;NameGruppe2;NameGruppe3;
Wenn ich bei der Ausgabe von $Username einfach wie von dir vorgeschlagen ein -NoNewLine hinzufüge, dann rotzt er mir alles in eine Zeile, auch alle folgenden User/Gruppennamen.
Also:
Benutzername;NameGruppe1;NameGruppe2;NameGruppe3;Benutzername;NameGruppe1;NameGruppe2;Benutzername;NameGruppe1;NameGruppe2;NameGruppe3;Benutzername;NameGruppe1;NameGruppe2;NameGruppe3;
Hast du auch die Zeile 21 eingefügt?
"" | Out-File -FilePath $csv -append -Encoding utf8
Zitat von @Kangaroojack:
Natürlich NICHT - übersehen. Sorry. Habs hinzugefügt. Jetzt passt es! Jetzt feile ich noch an weiteren Ausgaben die ich brauche, das sollte aber denke ich klappen.
Muss man das verstehen, warum es so funktioniert und nicht ohne diese Zeile?
Mit jedem neuen Username sollte er mit dem "append" ja eigentlich ne neue Zeile anfangen.
Zitat von @3063370895:
Hast du auch die Zeile 21 eingefügt?
Fügt nach jedem Nutzer eine newline hinzu
Hast du auch die Zeile 21 eingefügt?
"" | Out-File -FilePath $csv -append -Encoding utf8
Natürlich NICHT - übersehen. Sorry. Habs hinzugefügt. Jetzt passt es! Jetzt feile ich noch an weiteren Ausgaben die ich brauche, das sollte aber denke ich klappen.
Muss man das verstehen, warum es so funktioniert und nicht ohne diese Zeile?
Mit jedem neuen Username sollte er mit dem "append" ja eigentlich ne neue Zeile anfangen.
-Append bedeutet nur, dass der Text an die Datei angehängt wird, und die Datei nicht komplett überschrieben wird.