Protokollierung für folgendes Skript in Powershell
Moin zusammen,
kann mir jemand sagen wie ich hier eine CSV Datei erstellen kann mit dem Skript?
Ich würde gerne über die Aktionen ein Protokoll haben der mir sagt welcher Benutzer aus der Gruppe entfernt wurde und welcher Hinzugekommen ist, mit Datum und Zeit natürlich.
Leider bin ich mehr der Typ der keine Ausgaben macht, aber das macht durchaus Sinn hier.
Hat jemand ne Idee?
Vielen Dank :o)
kann mir jemand sagen wie ich hier eine CSV Datei erstellen kann mit dem Skript?
Ich würde gerne über die Aktionen ein Protokoll haben der mir sagt welcher Benutzer aus der Gruppe entfernt wurde und welcher Hinzugekommen ist, mit Datum und Zeit natürlich.
Leider bin ich mehr der Typ der keine Ausgaben macht, aber das macht durchaus Sinn hier.
Hat jemand ne Idee?
Import-Module ActiveDirectory
$groupname = "test123"
$OU = "*************"
$users = get-aduser -Filter { postalCode -like "*******" } -SearchBase $OU -Properties PostalCode -ResultSetSize $null
foreach($user in $users)
{
Add-ADGroupMember -Identity $groupname -Member $user.samaccountname -ErrorAction SilentlyContinue
}
$members = Get-ADGroupMember -Identity $groupname
foreach($member in $members)
{
if($member.distinguishedname -notlike "***************")
{
Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
}
}
Vielen Dank :o)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 251753
Url: https://administrator.de/forum/protokollierung-fuer-folgendes-skript-in-powershell-251753.html
Ausgedruckt am: 14.04.2025 um 16:04 Uhr
8 Kommentare
Neuester Kommentar
Moin Heiko,
guckst du hier ...
mit
erzeugst du zuerst ein leeres Array. Diesem Array fügt man dann im jeweiligen Abschnitt ein PSObject mit den gewünschten Spaltennamen(Eigenschaften) und den Werten hinzu.
Solch ein Array lässt sich dann direkt an export-csv für den Export in eine CSV-Datei übergeben.
Grüße Uwe
guckst du hier ...
Import-Module ActiveDirectory
$result = @()
$csv = 'C:\ergebnis.csv'
$groupname = "test123"
$OU = "*************"
$users = get-aduser -Filter { postalCode -like "*******" } -SearchBase $OU -Properties PostalCode -ResultSetSize $null
foreach($user in $users)
{
Add-ADGroupMember -Identity $groupname -Member $user.samaccountname -ErrorAction SilentlyContinue
$result += new-object PSObject -Property @{'Username'=$user.samaccountname;'Group'=$groupname;'Action'='Hinzugefügt';'Date'=get-date}
}
$members = Get-ADGroupMember -Identity $groupname
foreach($member in $members)
{
if($member.distinguishedname -notlike "***************")
{
Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
$result += new-object PSObject -Property @{'Username'=$member.samaccountname;'Group'=$groupname;'Action'='Entfernt';'Date'=get-date}
}
}
$result | export-csv $csv -Delimiter ";" -NoTypeInformation -Encoding UTF8
$result = @()
erzeugst du zuerst ein leeres Array. Diesem Array fügt man dann im jeweiligen Abschnitt ein PSObject mit den gewünschten Spaltennamen(Eigenschaften) und den Werten hinzu.
$result += new-object PSObject -Property @{'Username'=$user.samaccountname;'Group'=$groupname;'Action'='Hinzugefügt';'Date'=get-date}
Grüße Uwe
Zitat von @pixel0815:
Sag mal kann man das so in der Art machen das er vorher prüft ob der Benutzer schon drinne ist (Zeile 6 )
wo drinne ? in der CSV oder in der Gruppe ?Sag mal kann man das so in der Art machen das er vorher prüft ob der Benutzer schon drinne ist (Zeile 6 )
Um zu testen ob der User in der Gruppe bereits Mitglied ist kannst du es so machen:
$test = Get-AdGroupMember $groupname | ?{$_.SamAccountName -eq $user.SamAccountname}
if (!$test){
# User ist noch kein Mitglied, füge User zur Gruppe hinzu
# Add-ADGroupMember ......................
}
Zitat von @pixel0815:
Ich wollte das eigentlich direkt in der Zeile der Userermittlung machen mit nem Pipe oder so
OK, das geht auch:Ich wollte das eigentlich direkt in der Zeile der Userermittlung machen mit nem Pipe oder so
$groupmembers = Get-AdGroupMember $groupname
$users = get-aduser -Filter { postalCode -like "*******" } -SearchBase $OU -Properties PostalCode -ResultSetSize $null | ?{$_.SamAccountName -notin $groupmembers.SamAccountName}
Du hast die erste Zeile nicht mit übernommen:
oder du verwendest eine veraltete Powershell die den Operator -notin noch nicht kennt (ab PS 3.0).
Lässt sich aber Alternativ auch mit dem Filter machen:
http://stackoverflow.com/questions/15353414/powershell-and-activedirect ...
$groupmembers = Get-AdGroupMember $groupname
Lässt sich aber Alternativ auch mit dem Filter machen:
http://stackoverflow.com/questions/15353414/powershell-and-activedirect ...