Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung Batch & Shell

GELÖST

Protokollierung für folgendes Skript in Powershell

Mitglied: pixel0815

pixel0815 (Level 1) - Jetzt verbinden

13.10.2014, aktualisiert 12:31 Uhr, 862 Aufrufe, 8 Kommentare, 1 Danke

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?

01.
Import-Module ActiveDirectory 
02.
$groupname = "test123" 
03.
$OU = "*************" 
04.
$users = get-aduser -Filter { postalCode -like "*******" } -SearchBase $OU -Properties PostalCode -ResultSetSize $null 
05.
foreach($user in $users) 
06.
07.
  Add-ADGroupMember -Identity $groupname -Member $user.samaccountname -ErrorAction SilentlyContinue 
08.
09.
$members = Get-ADGroupMember -Identity $groupname 
10.
foreach($member in $members) 
11.
12.
  if($member.distinguishedname -notlike "***************") 
13.
14.
    Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname 
15.
16.
}
Vielen Dank :o)
Mitglied: colinardo
13.10.2014, aktualisiert um 10:47 Uhr
Moin Heiko,
guckst du hier ...
01.
Import-Module ActiveDirectory 
02.
$result = @() 
03.
$csv = 'C:\ergebnis.csv' 
04.
$groupname = "test123" 
05.
$OU = "*************" 
06.
$users = get-aduser -Filter { postalCode -like "*******" } -SearchBase $OU -Properties PostalCode -ResultSetSize $null 
07.
foreach($user in $users) 
08.
09.
  Add-ADGroupMember -Identity $groupname -Member $user.samaccountname -ErrorAction SilentlyContinue 
10.
  $result += new-object PSObject -Property @{'Username'=$user.samaccountname;'Group'=$groupname;'Action'='Hinzugefügt';'Date'=get-date} 
11.
12.
$members = Get-ADGroupMember -Identity $groupname 
13.
foreach($member in $members) 
14.
15.
  if($member.distinguishedname -notlike "***************") 
16.
17.
    Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname 
18.
    $result += new-object PSObject -Property @{'Username'=$member.samaccountname;'Group'=$groupname;'Action'='Entfernt';'Date'=get-date} 
19.
20.
21.
$result | export-csv $csv -Delimiter ";" -NoTypeInformation -Encoding UTF8
mit
$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}
Solch ein Array lässt sich dann direkt an export-csv für den Export in eine CSV-Datei übergeben.

Grüße Uwe
Bitte warten ..
Mitglied: pixel0815
13.10.2014 um 11:03 Uhr
Das ist ja klasse.
Sag mal kann man das so in der Art machen das er vorher prüft ob der Benutzer schon drinne ist (Zeile 6 )
Irgendwie bekomme ich das nicht hin.
Bitte warten ..
Mitglied: colinardo
13.10.2014, aktualisiert um 11:15 Uhr
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 ?
Um zu testen ob der User in der Gruppe bereits Mitglied ist kannst du es so machen:
01.
$test = Get-AdGroupMember $groupname | ?{$_.SamAccountName -eq $user.SamAccountname} 
02.
if (!$test){ 
03.
  # User ist noch kein Mitglied, füge User zur Gruppe hinzu  
04.
  # Add-ADGroupMember ...................... 
05.
}
Bitte warten ..
Mitglied: pixel0815
13.10.2014 um 11:29 Uhr
Ich wollte das eigentlich direkt in der Zeile der Userermittlung machen mit nem Pipe oder so
Bitte warten ..
Mitglied: colinardo
13.10.2014, aktualisiert um 11:35 Uhr
Zitat von pixel0815:

Ich wollte das eigentlich direkt in der Zeile der Userermittlung machen mit nem Pipe oder so
OK, das geht auch:
01.
$groupmembers = Get-AdGroupMember $groupname 
02.
$users = get-aduser -Filter { postalCode -like "*******" } -SearchBase $OU -Properties PostalCode -ResultSetSize $null | ?{$_.SamAccountName -notin $groupmembers.SamAccountName}
ist Performancetechnisch besser das in zwei Zeilen aufzuteilen, sonst muss das Script jedes mal die Gruppenmember enumerieren...
Bitte warten ..
Mitglied: pixel0815
13.10.2014 um 11:54 Uhr
Merkwürdig.
Wenn ich jetzt den Filter direkt in der PS so setze

01.
get-aduser -Filter { postalCode -like "*22869*" } -SearchBase $OU -Properties PostalCode,SamAccountName -ResultSetSize $null | ?{$_.SamAccountName -notin $groupmembers.SamAccountName}
erhalte ich auf dem DC ein Ergebnis.

Das Skript läuft aber mit einem Fehler.

01.
Sie müssen auf der rechten Seite des Operators "-" einen Wertausdruck angeben. 
02.
Bei C:\Users\*****\Documents\DynmischeGruppe.ps1:18 Zeichen:158 
03.
+ $users = get-aduser -Filter { postalCode -like "*22869*" } -SearchBase $OU -Properties PostalCode,SamAccountName -ResultSetSize $null | ?{$_.SamAccountName - <<<< notin $groupmembers.SamAccountName} 
04.
    + CategoryInfo          : ParserError: (:) [], ParseException 
05.
    + FullyQualifiedErrorId : ExpectedValueExpression
Bitte warten ..
Mitglied: colinardo
LÖSUNG 13.10.2014, aktualisiert um 12:31 Uhr
Du hast die erste Zeile nicht mit übernommen:
$groupmembers = Get-AdGroupMember $groupname 
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 ...
Bitte warten ..
Mitglied: pixel0815
13.10.2014 um 12:15 Uhr
Ops- peinlich! ... Ich sag mal nix mehr
Habe noch die Version 2.0 auf meiner Maschine und auf dem PC wo ich ab und zu teste die 3.0
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
PowerShell Skript für doppelte Dateinamen
gelöst Frage von janelsaesserBatch & Shell1 Kommentar

Hallo zusammen, ich habe einen Oder (01_XY) in dem ganz viele Bilder von Personen liegen. Diese Bilder haben als ...

Batch & Shell
Powershell Skript fehlerhaft?
Frage von SpeakerSTBatch & Shell3 Kommentare

Hallo, ich habe mir ein Powershell Skript geschriebe was bisher auch immer funktioniert hat aber unter einem Windows Server ...

Batch & Shell
Powershell + Batch Skript kombiniert
gelöst Frage von mschaedler1982Batch & Shell11 Kommentare

Hallo zusammen. Ich habe hier zwei Skripte (Powershell + Batch Skript) Die Batch Datei: (Zu dieser Datei muss ich ...

Batch & Shell
PowerShell 2.0 sendMail Skript
gelöst Frage von TranministratorBatch & Shell15 Kommentare

Hallo liebe Admins, ich kämpfe momentan(schon etwas länger) mit automatisiertem Mailversand. PowerShell 4 ist kein Problem, das läuft. Hier ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Windows Server
DNS Forwarding an andere Domäne
Frage von detox91Windows Server9 Kommentare

Hallo, für Testzwecke haben wir bei uns eine zweite Windows Domäne (B.local) aufgebaut, welche komplett unabhängig und isoliert der ...