Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.056
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. Der Erweiterte Support für Excahnge 2010 geht bis 14.Januar 2020 https://support.microsoft.com/de-de/lifecycle/search/730
  2. 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?
  3. ... 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)
  4. 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!!
  5. 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.
  6. 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 }
  7. 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".
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. Bitte bitte editier den Beitrag nochmal und formatier den Code als Code. So isses schwer den zu kopieren und zu verstehen, weil er Zeilenumbrüche enthält, so keine hingehören!.
  15. Hmmm .... klingt ulkig. Ich glaub, ich schließ mich jetzt zahni und testperson an ... Haben die PC-Namen in der Text-Datei keine eindeutigen Namen? Wenn es PC-Namen in einer Domain sein sollten, sollten sie das aber haben. Vielleicht zeigst Du einfach mal ein bissl mehr von Deinem restlichen Code und/oder sagst, was Du am Ende erreichen möchtest .... vielelciht hast Du Dich in etwas verrannt und es gibt eine viel einfachere Lösung. Ganz einfach .... Du iterierst mit einer foreach-Schleife über Deine Variable $Computers .... !?
  16. ... und wenn Du das auf dem Server der die Freigabe zur Verfügung stellt lokal ausführst? (Nur um sicher zu gehen ... Du führst das jeweils mit erhöhten Rechten aus, richtig? )
  17. icacls "\\192.168.10.100\Users$" /remove *S-1-1-0 /t /c .... und so auch nich?
  18. Meistens wenn's ein New-... gibt, gibt's auch ein Remove-..., Set-... und ein Get-.... 1..5 | ForEach-Object{ New-Variable -Name "PC_number_$_" -Value $(Get-Random -Minimum 10 -Maximum 100 ) } 1..5 | ForEach-Object{ Get-Variable -Name PC_Number_$_ }
  19. Sehr oft wenn es eine Methode Get...() und Set...() gibt, gibt häufig auch Methoden wie Add....() und Remove...(). Eine, wie ich finde, ziemlich gute Übersicht findest Du hier. Powershell Praxis Datei- und Verzeichnisberechtigungen. Ich persönlich finde die Berechtigungspflege mit Powershell alles andere als intuitiv und elegant gelöst. Ich verwende, wenn nötig, das bewährte Tool icacls.
  20. Noch besser wäre in so einem Fall sogar Get-ADUser -Filter "GivenName -eq 'olga'" -Properties * ... immer so weit wie möglich "links" filtern. Das geht schneller und ist weniger "Stress" für's AD.
  21. Supi ... genau das meinte ich. Ich bin stolz auf Dich!
  22. Hmmm ... was ich eignetlich meinte ist, wenn robocopy ein paar Bytes kopiert, gibt es die Gesamtmenge in Bytes an. Sind es einige Kilobytes, hast Du in der Ausgabe die Agabe "xx k", sind es ein paar Megabytes, zeigt die Ausgabe "xx m" .... usw. Das ist das Standardverhalten, wenn man nix explizit angibt. Wenn Du jetzt aber nur die Zahl "wegfängst", weißt Du nicht wirklich, wieviel Daten kopiert wurden. Es könnten 2 Bytes sein oder 2 Terrabyte.
  23. Hmmmm ... bist Du Dir wirklich sicher? Wenn ich Deine Beispiel-Logdaten richtig interpretiere, die Du am Anfang gepostet hattest, hast Du dort 2TB von insgesamt 5.99TB kopiert. In der Ausgabe, die Du hier oben zeigst, steht 0GB. Bist Du sicher, dass das so zusammenpasst, wie Du Dir das vorstellst? Deshalb hätte mein Code die kopierten Bytes immer als Bytes entgegengenommen und selbst in MB umgerechnet. Damit könntest Du die automatische "Zusammenfassung" größerer Dateimengen von robocopy umgehen.
×
×
  • Neu erstellen...