Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.035
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. ... hmmm ... das ist hier kein Unterricht, in dem ich Dich auffordere Dinge zu mutmaßen. ... benutz Deine favorisierte Internet-Suchmaschine und fang an zu suchen!! Lies Dir Kenntnisse an! Ich empfehle, mit der offiziellen Doku für die Befehle anzufangen, die in dem Code-Schnipsel verwendet werden. Die Grundlagen von PowerShell wären auch nicht schlecht ... die helfen Dir, schneller zu Ergebnissen zu kommen. Und Du darfst und solltest natürlich auch selbst Dinge herausfinden. Du hast eine PowerShell-Console vor Dir? ... dann probierst Du mal dies und mal das und lernst nebenbei wie das Ganze funktioniert.
  2. Hmmm ... das Konzept einer Internet-Suchmaschine ist Dir bestimmt geläufig, oder? Als Aller-Aller-Erstes, wenn Du etwas nicht weißt, solltest Du versuchen, darüber selbst etwas rauszufinden. Erst wenn Du damit wirklich nicht weiterkommst, fragst Du jemanden, der es wissen könnte. Davon unabhängig ... was könnte denn das Wort "SearchBase" in so einem technischen Zusammenhang bei Thema Active Directory bedeuten?
  3. OK, ich glaube zwar, dass diese Frage eher in das Scripting-Unterforum gehört, aber damit wir hier endlich mal zu Potte kommen, hier mal eine Idee von mir. Wenn ich das nicht falsch verstanden habe, möchtest Du alle User die in mindestens einer Gruppe sind, deren Name mit dem Buchstaben "V" beginnt, dem 8 beliebige Ziffern folgen, richtig? Ich würde in diesem Fall einfach nach den Gruppen suchen, die diese Bedingung erfüllen und dann deren Mitglieder auflisten. $SearchBase = 'OU=Berlin,OU=Germany,OU=Europe,DC=contoso,DC=com' $GroupMemberList = Get-ADGroup -Filter "Name -like 'V*'" -SearchBase $SearchBase | Where-Object -Property Name -Match -Value '^v\d{8}' | ForEach-Object { Get-ADGroupMember -Identity $_.sAMAccountName } Da zu erwarten ist, dass einige Konten mehrfach auftauchen, kannst Du entweder direkt ein "| Select-Object -Unique" anhängen oder es in einem zweiten Schritt machen: $GroupMemberList | Select-Object -Unique Edit: Achja ... falls Du für die Lösung der Aufgabe ein Lob bekommen solltest, möchte ich, dass Du sagst, dass Du das nicht allein geschafft hast und dass Du dieses Forum hier erwähnst!!!!! ... und es wäre empfehlenswert - besonders für Dich selber - wenn Du versuchst, zu verstehen, was genau der Code tut.
  4. Du machst es Dir und anderen gern schwerer als nötig, oder? Wenn es sich um so ein kurzes Skript handelt, poste am Besten das ganze Skript - nicht nur einen Teil. Und es wäre nett, wenn Du nicht ganz so viel White-Space postest - das macht den Code schwerer lesbar. Wenn Du innerhalb der Schleife einen Node identifiziert hast, der aufgeteilt werden soll - Du also bereits an der Stelle bist, die Du nach dem Aufsplitten entfernen möchtest - solltest Du genau diesen Node auswählen - nicht pauschal alle Nodes!! Also nicht .SelectNodes() auf alle Nodes FVALUE sondern nur den einen, den Du grad bearbeitest!! Input: <?xml version="1.0" encoding="UTF-8"?> <BMECAT> <T_NEW_CATALOG> <PRODUCT mode="new"> <PRODUCT_FEATURES> <FEATURE> <FNAME></FNAME> <FVALUE>XYZ; 52; green </FVALUE> <FORDER></FORDER> </FEATURE> <FEATURE> <FNAME></FNAME> <FVALUE>XYZ; 53; blue </FVALUE> <FORDER></FORDER> </FEATURE> <FEATURE> <FNAME></FNAME> <FVALUE>Bla keks ohne semikolon</FVALUE> <FORDER></FORDER> </FEATURE> </PRODUCT_FEATURES> </PRODUCT> </T_NEW_CATALOG> </BMECAT> Code: $XmlData = [xml](Get-Content -Path 'C:\Users\MeinName\Desktop\DE_nv2040.xml') foreach ($Feature in ($XmlData.BMECAT.T_NEW_CATALOG.PRODUCT.PRODUCT_FEATURES).FEATURE ) { if ($Feature.FVALUE -match ";") { $SplittedFVALUE = ($Feature.FVALUE -split ';').trim() foreach ($Value in $SplittedFVALUE) { $child = $XmlData.CreateNode("element", "FV", "") $child.InnerText = $Value $Feature.AppendChild($child) } $ItemToRemove = $Feature.SelectSingleNode('FVALUE') $Feature.RemoveChild($ItemToRemove) } } $XmlData.Save('C:\Users\MeinName\Desktop\DE_nv2040_new.xml') Output: <?xml version="1.0" encoding="UTF-8"?> <BMECAT> <T_NEW_CATALOG> <PRODUCT mode="new"> <PRODUCT_FEATURES> <FEATURE> <FNAME> </FNAME> <FORDER> </FORDER> <FV>XYZ</FV> <FV>52</FV> <FV>green</FV> </FEATURE> <FEATURE> <FNAME> </FNAME> <FORDER> </FORDER> <FV>XYZ</FV> <FV>53</FV> <FV>blue</FV> </FEATURE> <FEATURE> <FNAME> </FNAME> <FVALUE>Bla keks ohne semikolon</FVALUE> <FORDER> </FORDER> </FEATURE> </PRODUCT_FEATURES> </PRODUCT> </T_NEW_CATALOG> </BMECAT>
  5. Ein Zertifikat kostet wohl eher so um die 15€. Und da Du ja sowieso bezahlt wirst, könntest Du doch die entsprechende Konfiguration erledigen - es ist ja schließlich keine Geheimwissenschaft, die einen Doktor-Titel für's Verständnis erfordert. Und 15€ auf die Steuerzahler umgelegt, ist bestimmt ein guter Deal.
  6. Also erstmal: "Probieren geht über Studieren!!" ... was kann denn Schlimmes passieren, wenn Du es einfach ausprobierst ... im Zweifel lernst Du, dass es so eben nicht funktioniert. Und dann die ganz ehrlich gemeinte Frage "Warum? Was willst Du eigentlich erreichen? Was soll das Ganze?" Ich würde davon ausgehen, dass überflüssige Nodes einfach ignoriert werden. Also wenn eine Software einen Node oder eben mehrere Nodes <FV> unterhalb von <FEATURE> erwartet, es einen existierenden Node <FVALUE> einfach ignoriert. Wozu? Stört das? Wenn man mit .CreateNode() einen neuen Node erzeugen kann, gibt es bestimmt auch eine Methode, wie man existierende Nodes entfernen kann. Wenn Du das nicht möchtest, musst Du eine Abfrage einbauen, die entweder prüft, ob ein Semikolon enthalten ist oder ob das Aufspalten am Semikolon mehr als ein Element zurückgeliefert hat. Hier gibt's die Doku dazu: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_if?view=powershell-7.1 Wie oben schon erwähnt ... man kann existierende Nodes entfernen oder ändern und auch neue Nodes erzeugen und generell alles machen, was man gerne möchte. Wenn jetzt aber mit jeder neuen Antwort von Dir, die eigentliche Aufgabe geändert wird, fühle ich mich ehrlich gesagt verars***t und hab keine Lust mehr. ... und übrigens ... Das xmlns="" ist ein XML-Attribut und sollte meiner Meinung nach standard-konforme Tools nicht stören, wenn es nicht erwartet oder gebraucht wird. Hier noch ein wenig Literatur: https://www.w3schools.com/xml/default.asp https://powershellmagazine.com/2013/08/19/mastering-everyday-xml-tasks-in-powershell/ https://adamtheautomator.com/powershell-parse-xml/ https://www.heise.de/ix/artikel/Datenzugriff-506816.html
  7. Ein Bild von Code ist wirklich nicht hilfreich. Niemand hat Lust irgendetwas abzutippen - ganz besonders, wenn es um Code geht, wo ein kleiner Tippfehler schon einen großen Syntax-Fehler darstellen kann. Der Pfad stimmt schon. Das ist nicht das Problem. Das Problem ist, dass Du davon nicht nur einen hast. Wenn auf dem Tisch 3 Schrauben liegen und ich Dir sage "Gib mir mal die Schraube!", fragst Du mich vermutlich "Welche?" ..... Ich hab mir wieder mal etwas für Dich aus den Fingern gesaugt ... <?xml version="1.0" encoding="UTF-8"?> <BMECAT> <T_NEW_CATALOG> <PRODUCT mode="new"> <PRODUCT_FEATURES> <FEATURE> <FNAME></FNAME> <FVALUE>XYZ; 52; green </FVALUE> <FORDER></FORDER> </FEATURE> <FEATURE> <FNAME></FNAME> <FVALUE>XYZ; 53; blue </FVALUE> <FORDER></FORDER> </FEATURE> <FEATURE> <FNAME></FNAME> <FVALUE>XYZ; 54; yellow </FVALUE> <FORDER></FORDER> </FEATURE> </PRODUCT_FEATURES> </PRODUCT> </T_NEW_CATALOG> </BMECAT> Du brauchst also eine Schleife, um jedes Vorkommen von FEATURE zu behandeln: $XmlData = [xml](Get-Content -Path 'C:\Users\MeinName\Desktop\DE_nv2040.xml') foreach ($Feature in ($XmlData.BMECAT.T_NEW_CATALOG.PRODUCT.PRODUCT_FEATURES).FEATURE ) { $SplittedFVALUE = ($Feature.FVALUE -split ';').trim() foreach ($Value in $SplittedFVALUE) { $child = $XmlData.CreateNode("element", "FV", "") $child.InnerText = $Value $Feature.AppendChild($child) } } $XmlData.Save('C:\Users\MeinName\Desktop\DE_nv2040_new.xml') Ergebnis ist dann das: <?xml version="1.0" encoding="UTF-8"?> <BMECAT> <T_NEW_CATALOG> <PRODUCT mode="new"> <PRODUCT_FEATURES> <FEATURE> <FNAME> </FNAME> <FVALUE>XYZ; 52; green </FVALUE> <FORDER> </FORDER> <FV>XYZ</FV> <FV>52</FV> <FV>green</FV> </FEATURE> <FEATURE> <FNAME> </FNAME> <FVALUE>XYZ; 53; blue </FVALUE> <FORDER> </FORDER> <FV>XYZ</FV> <FV>53</FV> <FV>blue</FV> </FEATURE> <FEATURE> <FNAME> </FNAME> <FVALUE>XYZ; 54; yellow </FVALUE> <FORDER> </FORDER> <FV>XYZ</FV> <FV>54</FV> <FV>yellow</FV> </FEATURE> </PRODUCT_FEATURES> </PRODUCT> </T_NEW_CATALOG> </BMECAT>
  8. Vermutlich weil es einem noch niemand plausibel erklärt hat und man es deshalb einfach nicht besser weis. Es erschließt sich nicht jedem gleich intuitiv das Konzept von verschiedenen Konten auf einem PC. Kommt doch mal bitte von Eurem hohen Ross runter. Auch wenn es 2021 vielleicht wünschenswert wäre, interessiert sich nicht jeder so für IT-Technologie, wie wir, die wir 40 Stunden pro Woche nix anderes machen. @Dag Das Beste wird vielleicht sein, wenn Du jemanden findest, der Dir beim Zurücksetzen des Passwortes für den lokalen Admin und beim Sichern Deiner Daten hilft. Danach wäre es meiner Meinung nach dringend zu empfehlen, Dein Windows neu zu installieren. Somit wirst Du alle Altlasten los, die noch vom Vorbesitzer drauf sind und Du kannst mit einem sauberen System neu anfangen.
  9. Wer ist "sie"? ... davon abgesehen, müsstest Du die Ordnerstruktur selbst anpassen. Das Modul macht Dir lediglich den Zugriff auf die einzelnen Zeilen/Spalten/Zellen einfacher. Es genügt also nicht, einen kleinen Zauberstab zu schwingen ...
  10. Du könntest noch versuchen, ob Dir das ImportExcel-Modul von Doug Finke weiterhilft ... https://www.powershellgallery.com/packages/ImportExcel/
  11. Darf ich fragen, wozu Du Dich ausbilden lässt? Mit XML hast Du Dir aber auch gleich ein ziemlich komplexes Thema ausgesucht .... ... darum mache ich auch einen großen Bogen, wenn ich kann. Da Du uns nix zum "Spielen" zur Verfügung stellst, musste ich mir selbst was basteln. Ich gehe also von einer einzelnen Datei aus, die folgendermaßen aussieht: <?xml version="1.0" encoding="UTF-8"?> <BMECAT> <T_NEW_CATALOG> <PRODUCT> <PRODUCT_FEATURES> <FEATURE> <FVALUE>XYZ; 52; green</FVALUE> </FEATURE> </PRODUCT_FEATURES> </PRODUCT> </T_NEW_CATALOG> </BMECAT> Der Code um in dieser Datei den Inhalt des einzigen Nodes "FVALUE" jeweils am Semikolon aufzuspalten sieht wie folgt aus: $XmlData = [xml](Get-Content -Path 'C:\Users\MeinName\Desktop\DE_nv2040.xml') $SplittedFVALUE = ($XmlData.BMECAT.T_NEW_CATALOG.PRODUCT.PRODUCT_FEATURES.FEATURE.FVALUE -split ';').trim() foreach ($Value in $SplittedFVALUE) { $child = $XmlData.CreateNode("element", "FV", "") $child.InnerText = $Value $XmlData.BMECAT.T_NEW_CATALOG.PRODUCT.PRODUCT_FEATURES.FEATURE.AppendChild($child) } $XmlData.Save('C:\Users\MeinName\Desktop\DE_nv2040_new.xml') Idealerweise versuchst Du zu verstehen, was der Code alles macht. Das hilft Dir in Zukunft ähnliche Aufgaben zu erledigen. Ich gebe der neuen Datei auch einen neuen Namen, damit man ein bissl damit spielen kann und nicht immer wieder die Quell-Datei überschreibt. Jetzt hast Du also eine einzelne Datei behandelt. Du hattest geschrieben, dass es sich um mehrere Dateien handelt. Dann kannst Du jetzt um das Ganze jetzt noch eine große Schleife drumrumpacken, die genau das mit jeder einzelnen gefundenen XML-Datei macht. Und Dein Ausbilder darf gern erfahren, dass Du Dir Hilfe gesucht hast!!!
  12. Hmmm ... Du machst es uns nicht einfach Dir zu helfen. Bitte Code ausschließlich als Text posten - diesen natürlich entsprechend als Code formatieren. Das Gleiche gilt für Fehlermeldungen und Konsolen-Ausgaben, die Du vielleicht teilen möchtest. Die Fehlermeldung in PowerShell sind in Deutsch und auch größtenteils auch ziemlich eindeutig. Als Erstes solltest Du Dir vielleicht anschauen, wie man die Hilfe zu den einzelnen cmdlets - speziell die Syntax - richtig liest. Wir können Dir hier im Rahmen eines Forums nicht beibringen, wie man PowerShell-Skripte schreibt. Die Grundlagen wirst Du Dir selbst aneignen müssen. Wir können aber bei konkreten Problemen/Fehlern, die Du mit selbstgeschriebenem Code hast helfen und tun das auch sehr gern. Die Reihenfolge, in der ich die Hilfe oben bereits verlinkt hatte, ist quasi schon die, die grob auch schon für Deine Aufgabe passen sollte. In Pseudo-Code wäre es also ungefähr so: - Alle XML-Dateien im gewünschten Verzeichnis ermitteln - in einer Schleife alle gefundenen Dateien nacheinander behandeln - - Inhalt lesen - - gewünschte Stelle finden - - Inhalt der "Zelle" aufteilen - - für jeden einzelnen Teil der aufgeteilten Zelle einen neuen Node erzeugen und dem XML hinzufügen - - falls gewünscht, den "alten" zusammenhängenden Teil aus dem XML entfernen - - neuen kompletten XML-Inhalt in neue Datei oder in die Original-Datei schreiben. Achja ... Du tust Dir selbst und allen anderen, die Deinen Code lesen sollen, einen riesen Gefallen, wenn Du Deinen Code so ausführlich wie möglich schreibst. ... also die Parameter-Namen auschreiben und keine Aliasse verwenden.
  13. Hmmm ... dass PowerShell eine andere Skript-Sprache ist und nicht nur ein anderes Programm, in dem Du Deine Batch-Datei ausführst, hattest Du verstanden, oder?
  14. Das hatten wir ja weiter oben ja bereits begonnen. Poste doch bitte mal den PowerShell-Code, den Du hast. Dann sehen wir, wo es noch klemmt.
  15. Den meinte ich, ja. Der hat lokal sowieso ALLE Rechte, die man eventuell brauchen könnte. Er bräuchte halt nur zusätzlich das Schreibrecht auf einem zentralen Share. Oder Du sammelst die Dateien von den einzelnen Servern mit einem Account ein, der das darf. Es gibt so viele Möglichkeiten, wie man an dieses Thema rangehen kann ...............
  16. Das könnte auch der System-Account machen. Wenn Du dem "Server" Schreibrechte auf die zentrale Freigabe gewährst, brauchst Du an den Server quasi nix zusätzliches erstellen.
  17. OK - Hausaufgabe also. Da fällt es dann ja sowieso erst recht flach, dass Du hier was Fertiges bekommst. Und Dein Ausbilder würde mich bestimmt auch im Traum heimsuchen, wenn ich Dir das, was Du im Netz gefunden hast, einfach für Deine Aufgabe passend machen würde. Du sollst es ja schließlich verstehen/lernen. Ich würde Dir also empfehlen, Deine Aufgabe in einzelne kleine überschaubare Teile zu zerlegen und diese aufeinander aufbauend in Dein Skript einzubauen. Als ersten Teil würde ich vorschlagen, dass Du Dir alle XML-Dateien im gewünschten Verzeichnis auslisten lässt. Wenn der Schritt funktioniert und Du es verstanden hast, wie und warum es funktioniert, erweiterst Du um den nächsten Schritt ... usw. Und bitte nicht jede einzelne Zeile kommentieren - das ist zu viel. PowerShell-Code ist ziemlich "sprechend". Jeder, der auch nur annähernd der englischen Sprache mächtig ist, kann sich vorstellen, dass man z.B. mit "Get-Content" den Inhalt eines Objektes erhält. Und bitte, wenn Du hier Code postest, formatier den doch bitte auch als Code. Danke schon mal im Voraus.
  18. Von Deinen Zugriffsproblemen mal abgesehen, gibt es für solche Aufgaben schon mehr als ausreichend Beispiele im Netz. Du brauchst das Rad also nicht neu erfinden. Im einfachsten Fall erhältst Du viele der üblichen/wichtigen Informationen über ein Windows-Computer-System mit einem einzigen Befehl: Get-ComputerInfo
  19. Hmmm ... das klingt, als hättest Du eher keine Kenntnisse im Skripten allgemein, oder? Wenn Du damit anfangen möchtest, würde ich Dir - wie oben schon erwähnt - eher PowerShell als Batch empfehlen. Man bekommt im Zweifel auch mehr und schneller Hilfe dafür im Netz. Vielleicht schaust Du Dir mal die Hilfe zu den folgenden cmdlets (so heißen die Befehle in PowerShell) an: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-7.1 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content?view=powershell-7.1 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/foreach-object?view=powershell-7.1 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/out-file?view=powershell-7.1 Du solltest die Hilfe jeweils komplett inklusive der Beispiele lesen, um zu lernen wie sie verwendet werden. Wenn Du Probleme mit Code hast, den Du geschrieben hast, kannst Du den hier posten und wir werden nach Kräften versuchen Dir zu helfen aber wir schreiben hier keinen gebrauchsfertigen Code auf Anfrage. Das wäre mehr als unfair gegenüber Leuten, die damit ihr Geld verdienen (müssen).
  20. Wenn es sich um eine Windows-Domäne handelt, würde ich dringend empfehlen, einen Account zu benutzen, der in der AD-Gruppe ist, die Mitglied der lokalen Administratoren auf den Servern ist. Ohne wirklich Erfahrung damit zu haben, bin ich bisher davon ausgegangen, dass LAPS eher für Clients gemacht war - nicht für Server.
  21. Hallo @Proll012, das ist eine schöne Aufgabe für ein Skript. Mal davon abgesehen, dass ich eher PowerShell empfehlen würde, weil ich mich mit Batch dafür nicht gut genug auskenne und weil PowerShell auch die neuere und mächtigere Skriptsprache ist, klingt der Plan ganz gut. Was ist denn die eigentliche Frage?
  22. ... da is ja dann noch Platz bis LTSZ ... *undganztiefwegduck*
  23. ... und das alles nur, um eine Industrie am Leben zu halten und Profite dafür zu garantieren ... Thema "geplante Obsoleszenz" https://de.wikipedia.org/wiki/Centennial_Light
  24. ... habt ihr wieder Billig-Kram von Alibaba verbaut, oder? ... ansonsten gehen doch LEDs nicht kaputt!!
  25. Das ist ja auch alles verständlich, aber selbst wenn hier jemand sag "Klar, kein Problem, mach dies, mach das, dann geht's", ist das von MSFT nicht supported und im Zweifel bist Du der Dumme, der den Kopf dafür hinhalten muss. Würdest Du das wirklich wollen? Das Problem hier ist kein technisches!!
×
×
  • Neu erstellen...