Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.042
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. Dann fang doch vielleicht mit den Grundlagen von Powershell an. Dann verstehst Du auch, warum das Script so reagiert, wie es das tut und Du lernst, wie Du das debuggen kannst, bzw. wie Du es verändern musst, um das von Dir gewünschte Verhalten zu erhalten. Und Du lernst auch das integrierte Hilfe-System zu benutzen usw. .... Ein guter und sogar einigermaßen unterhaltsamer Start gelingt relativ einfach mit dem kostenlosen Video-Kurs in der Microsoft Virtual Academy - Getting Started with Powershell. (Keine Ahngst - es geht dort eigentlich um Powershell 3 aber die Grundlagen haben sich nicht geändert.)
  2. Sorry, aber das klingt alles etwas verworren. Von wem hast Du denn so eine Aufgabe bekommen? Normalerweise wird das Homeverzeichnis und die dazugehörige Freigabe nur einmal - EIN EINZIGES MAL - erzeugt. Das Verbinden des Benutzers mit dieser Freigabe und Zuweisung eines Laufwerksbuchstabens geschieht mittels GPOs - da brauchst Du auch kein Script. Wir haben 2018! - Logonscripte sind kaum noch notwendig.
  3. Du kannst das System anweisen, erweiterte Logs zu schreiben und diese dann auswerten. https://blogs.technet.microsoft.com/gladiatormsft/2014/03/17/enabling-advanced-windows-installer-logging/ Aber warum möchtest Du Dich denn in den INstallationsprozess "einklinken"?
  4. Hmmm ... nicht so ergiebig, oder? ... vielleicht bist Du mit solch einer Frage bei StackOverflow besser aufgehoben. Wenigstens findet man dort schon mal die ein oder andere bereits gestlelte Frage mit dem Thema PowerApps.
  5. Hmmm ... es geht Dir also quasi darum, hierarchische Daten darzustellen und keine strukturierten. Da ist eine tabellarische Anzeige sowieso eher ungeeignet. Wenn sich die Anzahl der Desktops pro Server in Grenzen hält, könnte man die Daten eventuell noch serialisieren. Also quasi sowas hier: Server ==> Destop1 ==> Tag1, Desktop2 ==> Tag2 Server2 ==> Desktop3 ==> Tag3, Desktop4 ==> Tag4.
  6. Ich bin mir nicht sicher, ob ich das richtig verstanden habe. Vielleicht wäre auch ein kleine Beispiel oder ein Stück Code von Dir hilfreich gewesen. Soll das dynamisch sein, oder soll es nur übersichtlicher im GridView angezeigt werden?
  7. Yep. Eben genau so, wie es in der Hiilfe beschrieben wird!! Es wäre sehr empfehlenswert, wenn Du Dir IMMER wenn Du ein cmdlet das erste Mal benutzt, die KOMPLETTE Hilfe dazu anschaust - inklusive der Beispiele. Häufig werden damit bereits viele Anfängerfragen (und manchmal auch Profi-Fragen) beantwortet.
  8. Das kann ich quasi nicht beantworten. Ich kenne ja Deine Infrastruktur nicht. Das "Standard-Replikations-Interval" zwischen "benachbarten" DCs ist wohl 45 min. wenn ich nicht irre. Ich würde auch erwarten, dass nach 3 Stunden eine Änderung in der Domäne "durchrepliziert" ist. ... 'gibt aber durchaus Optionen, die ein solches Verhalten plausibel erklären könnten.
  9. ooops ... hatte ich übersehen ... die Select-Anweisung müsste so aussehen: $users = Get-Aduser -Filter {title -eq '...'} -SearchBase "....." | Select-Object -ExpandProperty SamAccountName ... und dann kannste im foreach auch nur $users benutzen.
  10. Versuch ma .... foreach ($MA in $users.sAMAccountName){ ...
  11. Sorry, aber aus professioneller Sicht ist das schlicht und einfach Quatsch? Es ist klar definiert, was Standard- und was Extended Support beinhaltet. In der Standard-Support-Phase werden Feature- UND Security-Updates geliefert. In der Extended-Support-Phase werden nur noch Security-Updates geliefert. Wenn man mit den enthaltenen Features zufrieden ist, spricht Nichts dagegen, den Lebenszyklus eines Produkts auszunutzen. Welche Gründe wären denn das?
  12. Der Erweiterte Support für Excahnge 2010 geht bis 14.Januar 2020 https://support.microsoft.com/de-de/lifecycle/search/730
  13. Dein Code ist ein bissl wirr ... irgendwie. In Powershell macht man sowas eigentlich ein bsisl anders. Vielleicht fängst Du erstmal so an: $zaehler = 1 $Userlist = Get-Content -Path 'C:\Users\admgb\users.txt' | Sort-Object | Get-Unique Foreach($UserName in $userlist){ Set-ADAccountPassword -Identity "CN=$UserName,OU=user,OU=TEST,OU=RAU,DC=rauglobal,DC=local" -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "RAUKO@0$zaehler" -Force) $zaehler++ } Wenn Du in Deiner Quell-Datei "users.txt" Windows-AnmeldeNamen (sAMAccoutnNamen) hast, kannst Du diese direkt für Set-ADAccountPasswort benutzen und brauchst nicht den FQDN "zusammenbauen". Das liest sich auch leichter und ist weniger fehlerträchtig. Was willst Du eigentlich mit dem Password1 und und Password2 erreichen?
  14. ... kann mich meinem Vorredner nur anschließen .... Powershell!! Es ist sogar egal, ob der Name des Unterordners bekannt ist oder nicht. Wenn es um einen konkreten Unterordner geht, kannst Du es so machen: Get-ChildItem -Path C:\Users\*\Desktop Geht es um alle Unterordner, funktioniert es dann so: Get-ChildItem -Path C:\Users\*\* (Ich hab als Beispiel mal den Users-Ordner genommen, weil es den überall gibt)
  15. Hmmm .... standardmäßig rennt robocopy Links hinterher, was dann gern mal in so einer Schleife endet. Man kann dieses Verhalten dann mit den Optionen /XJ (allgemein) oder /XJF (nur für "Files") oder /XJD (nur für "Directories") deaktivieren. Einfach mal die Hilfe für robocopy (robocopy /?) aufrufen und sich die Optionen alle angucken. Im deutschen heißen die Dinger "Abzweigungspunkte" und im englishen "Junctions". BTW: Das ist kein Bug, das ist ein Feature!!
  16. Nur eine kleine Idee: Wenn Du wissen möchtest, ob ein optionales Feature in Windows aktiviert/installiert ist, brauchst Du keine DISM Abfrage. Das kann Powershell direkt "out-of-the-box" alleine. Hiermit bekommst Du alle optionalen Feature aufgelistet: Get-WindowsOptionalFeature -Online So kannst Du Dir alle Features die mit SMB1 zusammenhängen auflisten: Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol* Und so dampfst Du die Anzeige auf die für Dich vermutlich relevanten Infos ein: Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol* | Select-Object -Property FeatureName,State Wie üblich in Powershell, arbeitest Du mit Objecten und deren Eigenschaften. Das macht es natürlich auch möglich in einem Script, den Status des jeweiligen gesuchten Features abzufragen und das Ergebnis für weitere Schritte zu benutzen.
  17. Wenn Du die Dateien wirklich komplett ersetzen möchtest, sollte sowas hier funktionieren, oder? $Datei0 = Get-Item -Path '<PFAD>\Test0.txt' $Datei1 = Get-Item -Path '<PFAD>\Test1.txt' If($Datei0.LastWriteTime -gt $Datei1.LastWriteTime){ Copy-Item -Path $Datei0 -Destination $Datei1 -Force }
  18. Nimm Dir doch jetzt bitte erstmal die Zeit und schaff Dir die Grundlagen drauf. Das wird sehr viele Deiner anfänglichen Fragen beantworten. Es ist nicht Aufgabe eines Forums, Dir eine Technologie beizubringen. Wonach Du fragst ist Grundlagenwissen. Die allgemeine Antwort auf Deine Frage ist: "... mit einer Schleife, die je nach Aufgabenstellung die Abfrage einer Bedingung enthält".
  19. Ich weiß ja nicht, wie Du Dich gerade in Powershell einarbeitest, aber es ist bestimmt keine schlechte Idee, sich die Grundlagen einigermaßen strukturiert drauf zu schaffen .... das geht kostenlos und sogar einigermaßen unterhaltsam mit einem kostenlosen Videokurs in der Microsoft Virtual Academy - Getting Started with Powershell. Wenn Du dann einmal dabei bist und hoffentlich Spaß hattest, kannst Du gleich noch den 2. Teil angucken - Advanced Tools & Scripting.
  20. Na dann fang doch einfach mal mit den cmdlets Import-CSV und Out-GridView an. Damit hättest Du schon mal Deine "GUI". In der kannst Du dann den richtigen Datensatz auswählen und damit weitermachen.
  21. Auch das sollte kein Problem sein. Wenn Du weißt, welche Dateien Du "reingeschaufelt" hast, kannst Du ja prüfen, ob genau diese noch da, bzw. wieder weg sind und entsprechend weiter verfahren.
  22. Ein fertiges Script wirst Du vermutlich für so eine spezielle Aufgabe nicht finden. Aber wenn es für Deinen "Prozess" wichtig, dass der Ziel-Ordner leer/abgeräumt ist, bevor Du mit dem nächsten Quellordner weitermachst, würde ich eher keine Wartezeit einbauen, sonder eher einen Check, ob der Ziel-Ordner leer ist. Für sowas hat Powershell entweder das cmdlet Test-Path, wenn es nur um die "reine" Existenz eines Ordners oder einer Datei geht, oder das cmdlet Get-ChildItem, welches existierende Ordner oder Dateien zurückliefert .... die müsstest Du dann weiterverarbeiten. Je nachdem wie "Neuling" Du mit der Powershell bist, tust Du Dir eventuell selbst einen riesen Gefallen, wenn Du Dir die Grundlagen strukturiert und umfassend aneignest ... das geht sogar kostenlos und einigermaßen unterhaltsam in der Microsoft Virtual Academy mit dem Video-Kurs Getting Started with Powershell. Na dann erst mal viel Spaß beim Coden! ... und wenn Du dann Code hast, mit dem Du mal nicht weiterkommst, kannst Du ja wieder hier fragen. Eine gute Quelle für fertige Scripte und Module für Powershell ist übrigens die Powershell-Gallery.
  23. Da fehlt wohl das entscheidende Stück der Frage, oder? Was willst Du denn erreichen? Wenn Du im Pattern eckige Klammern benutzt suchst Du nach einer ZeichenKlasse ... in Deinem Fall also nach der Existenz von klein s und klein e aber nicht zwingend in dieser Reihenfolge. Das Caret-Zeichen (^) ist normalerweise ein Anker und meint "Am Anfang des Suchstrings". Ob es innerhalb einer Charachterklasse die gleiche Bedeutung hat, weiß ich nicht - bin aber eher skeptisch. Wenn Du eigentlich nach einer ZeichenGruppe suchen wolltest, müsstest Du normale runde Klammern benutzen. So klappt's wie erwartet: PS:>'test' -match '(es)' True und so klappt es nicht ... aber auch erwartet ... PS:>'test' -match '(^es)' False So ... ich hab nochmal recherchiert ... das Caret-Zeichen am Anfang innerhalb einer Zeichenklasse [^...] kehrt die nachfolgenden Zeichen um. Also in Deinem zweiten Beispiel suchst Du Alles ausser s und e. Das heißt Du findest die beiden t's. Das kannst Du auch überprüfen, indem Du Dir die nach einem positiven "Match" automatisch befüllte Variable $Matches mal auf der Konsole ausgeben lässt. Das Caret-Zeichen an beliebiger Stelle innerhalb einer Zeichenklasse [...^...], meint einfach ein literales Caret-Zeichen.
  24. Du könntest für's exportiren Export-CSV benutzen, um die Daten dann wieder mit Import-CSV einzulesen. Dann kannst Du direkt auf die "Eigenschaft" Name zugreifen. Oder Du benutzt beim Ausgeben in die Textdatei einfach Select-Object -ExpandProperty Name. Damit landet nur der Name in der Datei.
×
×
  • Neu erstellen...