Jump to content

PowerShellAdmin

Members
  • Gesamte Inhalte

    1.187
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von PowerShellAdmin

  1. Exchange hat den neusten Updatestand? Virenschutzprogramm installiert ? Läuft ein Backup oder Job ?
  2. Ich will Blut sehen ;-) Mir fehlt leider momentan noch die Zeit für den Ex2016 DAG & Migration... Soweit der Dienstleister gute Arbeit gemacht hat, ist es wirklich die erste Stelle, um das Thema möglichst offen und transparent mit diesem zu klären. So kannst du auch einschätzen, ob die Arbeiten nicht zum Ursprungsangebot gehören -womöglich Pauschal abgedeckt waren, bzw du anrecht auf eine Nachbesserung hast- oder einfach Folgeprobleme sind, die nicht im Ermessensspielraum des DL lagen. Falls der DL keinen guten Eindruck macht, würde ich wohl wechseln...
  3. Dein Quotierung ist genauso furchtbar wie dein PowerShell Code.... Da du meine -konstruktive- Kritik scheinbar nicht erkannt hast, hier noch mal kurz und hoffentlich verständlicher. -Diverse Variablen sind inhaltlich falsch benannt.(Variable für Folder nennst du File und das geht so weiter). -Ausführungsblöcke benötigt man nur bei mehreren Ausführungen innerhalb einer Bediengung oder Schleife -Variable aus einfachen Dateitypen(Int, String) muss man in der Regel nicht definieren (da kann man sich jetzt über die Form streiten) -Das Codebeispiel dient dir dazu eine verständliche Formatierung, Kommentierung, Einrückung, Zeilenabstände als auch Benamung zu zeigen. Hier gibts keine Diskussion - ich unterstütze so einen Blödsinn jedenfalls nicht - Davon abgesehen dass deine Aussage falsch ist. Ähm ja ... ernsthaft ?
  4. Variablen Benamung unter aller ... und nahezu durchweg falsch inhaltlich falsch benannt. Im Regelfall musst du in der PowerShell einfache Variablen nicht mit dem Datentyp initialisieren (ist natürlich eine saubere Grundform). Geschweifte Klammern (hat man nur bei Ausführungsblöcken),uvm. immer noch nicht sauber, Einrückung auch nicht... Ansonsten viel Spaß bei der Spielerei ;) Unterstütze aber so ein fragwürdigen Code nicht. Die Inhalte sind im Regelfall nur für Streaming lizenziert... PS: EIn PS Skript kann je nach Umfang formatiert gerne mal 500 Zeilen und mehr haben(auch auf mehrere Dateien verteilt), Struktur ist wichtig ;) Bsp für saubere Formatierung: #Schleife Ausgabe Dateinamen Foreach($file in $folder){ #Ausgabe Dateiname $file.fullname }
  5. Als kleines Feedback: Ich habe dir einen Lösungsweg vorgeschlagen - das schließt nicht zwangsläufig weitere und vielleicht auch bessere Möglichkeiten aus. Zu LDAP Query kann ich dir nicht so viel sagen, aber für deine Anforderung bietet sich Powershell wirklich an. Nur auf den Verlauf erschließt sich, dass du dich mit dem Thema nicht auseinander gesetzt hast, ebenso nicht auf die Vorschläge eingehst. Du willst dir Zeit sparen, aber andere sollen sich diese nehmen... Viel Erfolg
  6. An dieser Stelle ungern, wie gesagt man kann es recht einfach via PowerShell lösen, allerdings setzt dies gewisse Grundkenntnisse vorraus und vorallem auch Interesse. Also entweder findest du eine fertige Lösung via Google oder du setzt dich ernsthaft mit der Materie auseinander. Alternativ kann man auch einen Dienstleister beauftragen oder sich einfach durchklicken und es manuell erledigen...
  7. @Trix - siehe meine Antwort. Mitglieder ermitteln und in einer Foreach durch die Mitglieder rekursiv prüfen, ob diese in einer Gruppe mit dem Präfix VL sind... Hast du überhaupt schon recherchiert und was versuchst oder machst heute nen faulen ? Woche ist ja bald wieder rum^^
  8. Man muss ja nur alle Mitarbeiter abfragen (Get-ADUSER) und anschließend die Gruppenmitgliedschaften rekursiv ermitteln. Und eine zweite Ausgabe für Mitglieder die in keiner Gruppe mit dem Präfix VL_ sind. Es handelt sich ja lediglich um Memberof... Berechtigungen benötigt man für die Abfrage keine besonderen. Hier reicht ein Standardbenutzer und auf den Exchange muss man auch nicht zugreifen.
  9. Also anbei ist ein funktionales Beispiel von mir - sehe es als Vorschlag, das sollte eigentlich noch nicht die fertige Lösung sein ;) Ich habe es nur schnell zusammengetippt und man kann noch einiges verbessern. z.B.: -Getaduser nur auf aktive Mitglieder -Auswertung SIP Adressen -Sekundäre Adressen Ausgabe -Weitere Benutzerattribute (z.B. Kennung etc) -Ausgabe in Grid, CSV etc Ausgabe: user_name mail_prim_smtp mail_sek_smtp mail_sip --------- -------------- ------------- -------- Tester, Nummer1 tester.nummer1@domain.tld Tester, Nummer2 tester.nummer2@domain.tld tester.nummer2@domain2.tld #Konsole bereinigen cls #Arraylist erzeugen $user_list=New-Object System.Collections.ArrayList #Abfrage Benutzer $users=Get-ADUser -Filter * -SearchBase "OU=Mitarbeiter,DC=xxx,DC=xxx,DC=xxx" -Properties proxyaddresses, mail | where-object mail -ne $NULL #Schleife geht durch sämtliche Benutzer foreach($user in $users){ #Varibalen NULLEN $mail_prim_smtp=$NULL $mail_sek_smtp=$NULL $mail_sip=$NULL #Schleife arbeitet die Einträge im Attribut ab (innerhalb Benutzer) foreach($mail in $user.proxyaddresses){ #Eintrag enthält eine Adresse #$Mail #prüft ob es NICHT die primäre Adresse ist IF($mail -notmatch $user.mail){ #prüft ob es eine SMTP Adresse ist IF($mail -match 'smtp:'){ $mail_sek_smtp+=$mail.Substring(5,($mail.Length-5))+' ' } } } #Benutzerobjekt erzeugen $user_details = New-Object PSObject -Property @{ user_name=$user.Name #primäre email aus Benutzer ermittelt mail_prim_smtp=$user.mail mail_sek_smtp=$mail_sek_smtp mail_sip=$mail_sip } #Benutzerobjekt Arraylist hinzufügen $user_list+=$user_details } #Ausgabe $user_list | Select-Object user_name, mail_prim_smtp, mail_sek_smtp, mail_sip |Sort-Object user_name
  10. Steht doch oben Arraylist aufbauen, diese mit entsprechenden Objekten in einer Schleife befüllen. Verwende dieses Verfahren eigentlich immer mit Mengen. Die Arraylist kann man im Anschluss wunderbar auswerten, in Flatfiles packen, DB Schreiben usw.. Reihenfolge für Ausgabe anpassen ordnen: [Arraylist]| Select-Object [Attribut1],[Attribut2],[Attribut3] Sortieren: [Arraylist] | Sort-Object [Attribut] Damit wählst du die Reihenfolge aus, sortierst und gibst eine CSV aus dieser Menge aus -z.B.: $Arraylist | Select-Object kdnr, lastname, surname | Sort-Object kdnr |Export-CSV $csv_export -encoding unicode -Delimiter ';' -NoTypeInformation Wenn du die Gänse weghaben willst im Anschluss die CSV nochmal bereinigen - ging mit der CSV-Export nicht so einfach... (gc $export_csv) | % {$_ -replace '"', ""} | out-file $export_csv -Fo -En unicode Ein Objekt aufbauen finde ich so übersichtlicher- hatte aber auch Blub bereits eingeworfen: #init a object for the userdetails $user_details = New-Object PSObject -Property @{ Kennnummer=$user.UserPrincipalName Vorname=$user.GivenName Nachname=$user.surname Email=$user.EmailAddress } Skriptcode gehört auch kommentiert und sauber formatiert. Lesbarkeit ? Ich habe ein Template für meine Skripte, wo pauschal eine Trap konfiguriert ist, welche Loging oder auch Mails verschickt. Wenn ich mal mehr benötige, packe ich in meinen Skript ne Try Catch... Aber ein wenig Ordnung sollte man auch beim Skripten haben ... Aus Interesse - wieso nutzt du QAD ? Gab es hier Limits mit der Standard Abfrage ? (gibt mit den nativen Powershell Abfragen hier und da mal Limits ) Wahrscheinlich weil du dir alles schnell zurecht kopiert hast und dich nun wunderst, dass es nicht läuft ;) ? Ich bin kein Freund von 3rd Party, soweit es bereits nativ unterstützt ist und die Abfragemenge nicht in ein Limit läuft, sollte man es auch nutzen. Hatte hier auch schon Kundenprojekte, da sind solche Lösungen unpassend und oftmals nicht erwünscht. Get-ADUser -Filter * -SearchBase "OU=Finance,OU=UserAccounts,DC=FABRIKAM,DC=COM" -Properties proxyaddresses
  11. Content Filter auf den Clients ? Eine Firewall ( Network Bridge?)?
  12. sehe gerade da gibts nen kleines Webinar bei heise - lohnt sich das oder ist das zu einfach ? Umfang einer Stunde ist net so berauschend, auch konnte keine geplanten Inhalte finden.
  13. und weils es in einem anderen Thread bereits diskutiert wurde: Google als Dns... :nene: :nene: :nene: :nene: :nene: :nene: https://developers.google.com/speed/public-dns/privacy?csw=1#what_we_log
  14. Ahoi, habe endlich die Mail bekommen, dass das Exchange Kompendium von Thomas Joos nun im Versand ist. Ich war mit dem 2010 sehr zufrieden, da es ein wirklich toller Ratgeber und Nachschlagewerk war - wurde regelmäßig genutzt und lag immer zur Hand. Hoffe das 2016 ist der Qualität des 2010ers treu geblieben :-). Momentan ist der Markt hier noch etwas dünn, daher der Tipp. ISBN:3960090137 VG PSAdmin
      • 1
      • Like
  15. Wie beschrieben, das Projekt ist als solches sicherlich ein spannendes Experiment, aber im Business hat sowas nichts verloren. Und die Empfehlung kann ich damit auch nicht nachvollziehen. Doppelmoral ist genau eben nicht richtig, auf der einen Seite Ansprüche an den Datenschutz aber dann keinen vertrauenswürdigen Anbieter(und genau hier sehe ich die Probleme) nutzen => Da sehe ich die Doppelmoral. Klingt jetzt alles sehr ablehnend, aber ich trenne sowas immer gerne. Aber die Ursprungsfrage bleibt interessant ... Ich hatte auf einem Blog gelesen, Google speichert keine Daten oder wertet diese aus. IP Adresse temporär und DNS Abfragen, Lokalisierung uvm. werden dauerhaft gelogt - nach einem wirklichen Ausschluss von Datenauswertung klingt das alles nicht. Da wird mit den Daten klar Geld verdient. Ebenso die Headline - diese ist vorsätzlich täuschend. Quelle:https://developers.google.com/speed/public-dns/privacy?csw=1#what_we_log
  16. Spricht ja auch nichts gegen, dass du dem Projekt vertraust und es nutzt. Die Idee ist ja auch als solche sicher Interessant... Aber private- oder geschäftliche Nutzung, sind aber zwei paar Schuhe ;)
  17. ernsthaft ? ... Ich habe mir mal kurz die Infos rausgesucht und das hört sich eher nach einen potentiellen Sicherheitsrisiko an. Betrieb außerhalb des Standards und Kontrollen - weitere TLDs Betrieb durch x Personen und keinen direkten Verein o. Firma ...
  18. Garnicht so uninteressante Frage: Pauschal ... -Anbieter& Standort aus Deutschland/Europa ohne Firmensitz/Niederlassung in Amerika -Anbieter mit klarer Datenschutzbestimmung, dass die Daten nicht ausgewertet werden -vertrauenswürdigen Anbieter :-)
  19. :schreck: :schreck: :schreck: :schreck: :schreck: Der Datenkrake Daten geben ... :o
  20. Den Paramter hast du oben nicht angegegeben... ansonsten weitere Partition kannst du einfach includen. @Nas Zugriffsproblem?: Womöglich benötigt hier das Computerkonto auch zugriff - würde mal in die Richtung gehen. Beim Exchange PST Export auf UNC Pfade benötigt der Computer Account ebenfalls zugriff auf die Freigabe. Restore via USB schon getestet - bestimmt oder ?;)
  21. wbadmin start backup -include [alle Laufwerke] -vssfull -backupTarget:\\pfad-zum-speicherort -quiet Hast in deinem Backup keine Laufwerke eingebunden. Im Anschluss den Restore testen...
  22. :rolleyes: Wir haben hier gute 40 aktivie VMs für Entwickler... Alle laufen auf einem richtigen Hypervisor (in dem Fall VMWARE ESXi). Gerade bei Projektarbeiten greifen oftmals-immer- mehrere Leute auf ein System zu. Virtualisierung am Client mache ich nur in Ausnahmen - z.B. eine rechenintensive SharePoint VM. Hier arbeitet dann aber nur der MA und keine andern drauf. Nur weil etwas Jahre ok läuft ist es nicht gut - Never change a running system- ist per se absoluter Bullshit. Merkst du ja gerade selbst - der Kopfsalat für deine (doch recht einfache Migration) ist selbstgemacht. VG PSAdmin :-)
  23. So schauts aus,am Ende muss man alle Berührungspunkte durchgehen - hatte eine Webanwendung in der via PS Skript Berechtigungen für einen FTP Zugriff automatisch gesetzt werden. Problem: Die Webanwendung hatte sporadische Aussetzer, Ursache: Berechtigungen Webanwendung setzen Webanwendung & zeitgleicher Zugriff auf die Webanwendung => App-Pool reset... Bei größeren Problemen sind es oftmals die nicht so offensichtlichen Punkte ;) Ich hatte den Fehler zum Glück in 2 Stunden intensiver Recherche A-Z gefunden... @Toasti => freut mich das es wieder funzt :)
  24. Also ob sich der Aufwand lohnt muss man ermitteln, wenn man hier regelmäßig Daten benötigt, durchaus möglich. Log Parser ist hier aber womöglich einfacher und schneller für dich - hier kann ich dich leider aber nicht unterstützen. Anbei ein Lösungsvorschlag in der PS: Ich gehe davon aus, je Event existiert eine CSV Datei - bietet sich hier an, da du das Objekt einfach importieren kannst. Wobei man via PS direkt die Eventlogs oder bestimmte Events von deinen Systemen abfragen kann... 1. Arraylist erzeugen (hier werden die sondierten Datensätze abgelegt-z.B. $events=New-Object System.Collections.ArrayList) 2. Alle CSV in einen Ordner kopieren - am einfachsten. 3. Alle Dateien des Ordners ermitteln (Get-ChildItem) - je nach Bedarf noch ein Filter setzen. 4..Foreach Schleife erstellen und alle Dateien des Ordners durchgehen 5. Innerhalb der Schleife eine CSV Importieren (import-csv) 6. Ein neues Objekt erzeugen - Attribute ObjektName & primärer Benutzername) - In der Initialisierung direkt die Attribute aus der CSV zuweisen. $event= New-Object PSObject -Property @{ ObjectName=[Platzhalter Variable] Username=[Platzhalter Variable] } #add to arraylist $events+=$event 7.Objekt zu Arraylist hinzufügen 8. Nach der Schleife Export-CSV, Outview-Grid oder in eine beliebige Datenbank schreiben oder auch in Visio visualisieren..
×
×
  • Neu erstellen...