Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.035
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. Ich würde Dir empfehlen, die Gruppenmitglieder mittels Get-ADGroupMember zu ermitteln und nur diese dann per Pipe an ein Foreach-Object weiterzugeben und darin dann mittels Get-ADUser nur diese User aus dem AD zu saugen. Das sollte deutlich schneller gehen, als das ganze AD oder die ganze -SearchBase erst auszulesen und dann hinterher zu filtern. Das cmdlet Get-ADUser hat einen Parameter -Properties. Damit kannst Du, neben den per default ausgegebenen Attributen, weitere angeben, die Du ausgegeben haben möchtest. Welche es insgesamt gibt, kannst Du einfach ermitteln, in dem Du mal z.B. Deinen eigenen Account mit Get-ADUser -Identity 'UserName' -Properties * ausgibst. Unabhängig von all dem, ist es immer empfehlenswert, die Hilfe der cmdlets zu lesen, die Du benutzt bzw. benutzen möchtest ... komplett und inklusive der Beispiele.
  2. Genaugenommen brauchst Du nicht mal Get-ChildItem. Ein Remove-Item -Path "C:\Users\*\AppData\Local\Microsoft\Office\*" -Recurse -Force -ErrorAction SilentlyContinue würde alle Dateien und Unterordner des angegebenen Office-Ordners in allen User-Profilen löschen. ... ohne Nachfrage!!
  3. Na dann wird's aber Zeit für VSCode!! ... wenn ich mich nicht verguckt habe, gibt's da keine Alterseinschränkung!!
  4. Hmmm ... bei mir funktioniert es so ... $Content = Get-Content -Path C:\sample\hap_mobil.bin -Raw $Content -match '.*(v(?:\d+\.){1,3}\d+).*' $Matches[1] ... kommt mir jetzt irgendwie zu einfach vor ... man muss nich ma tricksen ... hab ich beim Speichern was falsch gemacht? Edit: Was mir grad noch eingefallen ist - Versionsnummern sehen ja nicht immer genau so aus, wie Du es oben beschrieben hast ... "v1.3" wäre vermutlich auch eine valide Versionsnummer genauso wie "v10.22.328.3578". Die alle kannst Du mit dem in meinem Code-Beispiel ergänzten regex-Pattern einfangen.
  5. hmmmm .... na dann ma kukn, ob sich FuSer nochmal meldet ...
  6. Na jetzt bin ich aber gespannt .... her damit!
  7. OK ... ich bin weit davon entfernt, ein Experte zu sein, aber wenn ich mich nicht irre, ist Binary nicht gleich Binary. Es könnte sich also als schwierig herausstellen, eine generelle Lösung zu präsentieren, die mit einer beliebigen Binär-Datei funktioniert. Wäre es Dir möglich, uns eine um sensible Daten bereinigte Beispiel-Datei zukommen zu lassen?
  8. Ich glaube, dass es hilfreich wäre, wenn Du uns sagen könntest, was es ist. Was es nicht ist, wissen wir ja jetzt schon. Vielleicht hilft Dir das hier ja schon ein Stück: Use PowerShell and Regular Expressions to Search Binary Data
  9. Korrekt compilierte Binaries haben normalerweise eine entsprechende Eigenschaft, die man mit Powershell ganz einfach auslesen kann .... hier als Beispiel die Explorer.exe .... Get-Item -Path C:\Windows\explorer.exe | Select-Object -ExpandProperty VersionInfo Format-Table -AutoSize Das funktioniert normalerweise mindestens mit allen *.exe und *.dll Binaries.
  10. Mal ein Tipp für die Zukunft: Wenn Du einen Beitrag loben möchtest, gib ihm doch einfach ein "Herz" oder einen "Pokal", anstatt ihn mit einer Antwort quasi wieder zu aktivieren, ohne wirklich etwas Konstruktives beizutragen. Danke
  11. Probier ma das hier: $groups = Get-ADGroup -Filter { Name -like "WSUS*" } $GroupList = foreach ($group in $groups) { [PSCustomObject]@{ Group = $group.name MemberCount = (Get-ADGroupMember -Identity $group.Name).count } } $GroupList | Sort-Object -Property MemberCount Wenn Du jetzt noch ein Select-Object -First 1 dran hängst, hast Du die Gruppe mit den wenigsten Mitgliedern.
  12. Wie sieht denn Dein Code bisher aus? Mal ganz abstrakt betrachtet, liest Du die Gruppen aus, ermittelst deren Mitgliederzahl mit der .count() - Methode, die jedes Array mitbringt, sortierst die 3 Gruppen nach dieser Anzahl und nimmst die erste oder letzte - je nach dem, wie rum Du sortiert hast.
  13. Hallo Barniff99, vielleicht fängst Du vorne an und erzählst uns die ganze Geschichte, dann brauchen wir uns auch nicht iterativ langsam rantasten sondern können vielleicht gleich mit einer passenden Lösung (oder sogar mehreren Optionen) dienen.
  14. Steht doch aber da ... "/S /v /qn" anhängen und gut ist ...
  15. OK, es geht natürlich auch mit Powershell $Source = 'D:\Quelle' $Destination = 'D:\Ziel' Get-ChildItem -Path $Source -Directory | ForEach-Object { New-Item -Path $Destination -Name $_.Name -ItemType Directory }
  16. Man kann doch aber bei robocopy angeben, dass es auch leere Unterordner mit kopieren soll, oder hab ich wieder was falsch verstanden? ... also statt robocopy /s eben robocopy /e
  17. Ist "env" nicht ein reservierter Name, den man nicht für eigene Variablen benutzen kann?
  18. Ja, das war mir schon klar. Aber selbst wenn die Gruppe in der Liste mit dabei ist, kannst Du die "Liste entfernen". Die Gruppe Domänen-Benutzer würde das normalerweise nicht betreffen ... das meinte ich. Ich weiß - kein guter Stil - aber manchmal braucht man sowas ja trotzdem.
  19. Wenns' was altes ist - könnte es sein, dass im Rest des Scriptes noch was Fehlerhaftes dabei ist? Normalerweise ist die Gruppe "Domänen-Benutzer" die primäre Gruppe eines jeden AD-Accounts und lässt sich nicht ohne Weiteres entfernen ... hilft das vielleicht weiter? <zwinker zwinker>
  20. Ich würde als Dateierweiterung für die CSV-Dateien ".csv" empfehlen. Ich würde als Delimiter ";" (das Semikolon) empfehlen. .... und man könnte noch -Force dranhängen.
  21. Du weißt, dass Du beide Aktionen zusammen in der Schleife laufen lassen kannst? N' Tipp zu den Kommentaren: Die cmdlets von Powershell sind ziemlich "sprechend". Jeder der Powershell kennt, weiß, was Get-ADComputer oder Copy-Item oder Get-CimInstance macht. Das brauchst Du also nicht umbedingt zu kommentieren. Da wäre dann im Zweifel eher eine Information hilfreich, warum Du eine Aktion machst, wie Du sie machst, wenn das nciht sowieso offensichtlich ist.
  22. Vielleicht teilst Du das Script mit der Community und markierst das dann entsprechend als die Lösung. Das hilft anderen, die das gleiche oder ein ähnliches Problem haben, die Lösung etwas schneller zu finden.
  23. Die WMI und CIM cmdlets liefern üblicherweise eine Property PSComputerName mit. Wenn Du die im Select-Object mit angibst, sollte's passen ...
  24. Nur ganz nebenbei bemerkt ... ein ausreichend aktuelles Betriebssystem mit ausreichend aktueller Powershell-Version vorausgesetzt, wäre es empfehlenswert, statt Get-WmiObject -Class win32_operatingsystem | Select-Object -Property LastBootUpTime lieber Get-CimInstance -ClassName CIM_OperatingSystem | Select-Object -Property LastBootUpTime zu benutzen. So erledigt die Powershell die nötige Konvertierung von selbst.
×
×
  • Neu erstellen...