Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.035
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. Supi. Manchmal denkt man einfach ein bissl zu kompliziert. Ich versuche immer nach dem KISS-Prinzip zu arbeiten.
  2. Du machst immer wieder die gleichen Fehler. Du brauchst dringend Grundlagen. Wir haben alles Nötige schon mal gepostet.
  3. hmmmm .... na das nur wenn's nicht anders geht ... also wenn's eher hierarchische Daten sind ... aber das trifft ja in diesem Fall noch nicht zu.
  4. Es wär natürlich ne gute Idee, nicht nach "X" zu fragen, wenn Du eigentlich "Y" wissen willst. Wenn Du in der Spalte mit den Gruppen/Berechtigungen mehrere durch Trennzeichen getrennte Einträge drin hast, kannst Du die mittels "-split" in ein Array aufspalten und dann mit einer Schleife über dieses Array "drüber-iterieren". ... da brauchst Du keine 100 if's untereinanderzupacken. Edit: also sowas hier: $CSVInput = @' user,gruppen max.mustermann,"test1,test2,test3,test4,test5,test6" frau.mustermann,"test1,test2,test,3,test4" '@ | ConvertFrom-Csv -Delimiter ',' foreach ($Item in $CSVInput) { $GruppenListe = $Item.gruppen -split ',' foreach ($Gruppe in $GruppenListe) { [PSCustomObject]@{ User = $Item.User Gruppe = $Gruppe } } }
  5. Die CSV müsste dann ungefähr so aussehen: user,gruppen max.mustermann,"test1,test2,test3,test4,test5,test6" frau.mustermann,"test1,test2,test,3,test4" Und mit https://docs.microsoft.com/en-us/powershell/module/activedirectory/add-adprincipalgroupmembership?view=windowsserver2019-ps kannst Du in einem Rutsch mehrere Gruppenmitgliedschaften für einen User konfigurieren.
  6. Es wäre meiner Meinung nach einfacher, wenn es eine Spalte für die Gruppen gäbe und Du die einfach einem Rutsch den Usern zuweist.
  7. Die Hilfe ist PowerShell eingebaut. Mit "Get-Help <cmdlet>" bekommst Du die Syntax angezeigt. Ausserdem kannst Du, wenn Du den Namen eines cmdlet getippt hast und nicht weißt, wie's weitergeht einfach ein "-" tippen und dann mit Tab durch die Parameter "blättern" oder in der ISE wird Dir, wenn Du den "-" eingibst, schon die Liste der Parameter aufgeklappt. Edit: Noch besser wäre, wenn Du VSCode für die Entwicklung von PowerShell-Code benutzt. Dort bekommst Du die meiste Hilfe.
  8. Es hilft meiner Meinung nach sehr dem Verständnis und der Lesbarkeit, wenn man die Parameternamen nicht weglässt. Nutzt man die "Tab-Vervollständigung" ist es auch nicht soo viel mehr zu tippen. Deine Code-Zeile $items = Get-ChildItem -recurse $folderpath "Neuer Ordner" ... würde dann zu ... $items = Get-ChildItem -Path $folderpath -Name "Neuer Ordner" -Recurse ... und ich packe Switch-Parameter immer gern ans Ende des Kommandos.
  9. Ich würde Dir empfehlen, Deinen Code so explizit wie irgend möglich zu schreiben, keine Parameternamen wegzulassen, keine Aliase zu benutzen und so weiter. Das sollte Dir helfen, Deinen eigenen Code zu verstehen. Auch solltest Du, wenn Dein Code nicht das tut, was Du Dir erhoffst, selbst versuchen herauszufinden, warum das nicht so ist. Wenn Du Variablen erzeugst und füllst, lass Dir den Inhalt der Variablen einfach auf der Konsole ausgeben, das sollte Dich schon viel weiter bringen. Und die Methoden aus den Links, die ich Dir in dem anderen Thread gepostet hatte, machen dann den Rest. Wenn das nicht ein Fehler ist, der beim hier reinkopieren passiert ist, suchst Du in Deiner zweiten Code-Zeile nach einer (1) ganz bestimmten XML-Datei ("=.xml") und weist das Ergebnis einer Variablen zu. Eine Schleife über ein einzelnes Element, gibt im besten Fall einfach dieses eine Element wieder aus. In Deiner 4. Code-Zeile liest Du den Inhalt der Datei aus und speicherst ihn als XML-Objekt in der Variablen $xml. In der nächsten Zeile versuchst Du auf das XML-Object zuzugreifen, benutzt aber die falsche Variable - nämlich $xmlobject anstatt $xml. ... was ja nicht heißt, dass der Code fehlerfrei wäre ... ... kann ja auch nicht. Schau Dir doch bitte nochmal an, wie man ein PowerShell-Skript debugged!
  10. ... und ich mach noch ne Packung Treets auf ...
  11. ... oder auf PowerShell umzusteigen ...
  12. Na ma kukn, wie's weitergeht. Wenn Du wieder etwas postest, bitte möglichst das komplette Skript.
  13. Ich fürchte, da machst Du Dir ein bissl was vor. Es gibt in PowerShell verschiedene Ansätze, wie man Schleifen realisieren kann. Einmal die Pipe-Methode und dann die "Klassische" Schleifen-Methode. Schau Dir mal die Beispiele in den Dokus an, die ich oben verlinkt hatte. Die Dateinamen sollten dann in der Schleifenvariablen stecken, damit Du in jedem Schleifendurchlauf genau eine Datei beackerst.
  14. Ich weiß gar nicht, wo ich da anfangen soll .... und das ist nicht böse gemeint. Du hast in den ersten 5 Zeilen 8 Syntax-Fehler. Wenn ich mich nicht irre, hatte ich Dir schon mal empfohlen, Dir als Erstes die Grundlagen von PowerShell im Speziellen und Scripting im Allgemeinen anzueignen. Du tust Dir selbst und uns allen keinen Gefallen, wenn Du das überspringst. Es heißt nicht umsonst "Grundlagen"!! ... alles andere baut darauf auf. Edit: z.B. ist Foreach nicht gleich Foreach .... 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.core/about/about_foreach?view=powershell-7.1
  15. Ich fürchte, Du haust da Einiges gehörig durcheinander. Wenn Du eine XML-Datei einliest und das auch als [XML]-Typ, dann solltest Du ausschließlich XML-Methoden für die Manipulation verwenden. Wenn Du eine "einfache String Ersetzung" machen möchtest, brauchst Du nicht explizit den XML-Typ erzwingen.
  16. Was genau steht denn in der Variablen "$FinishedXml"? Wenn Du die Original-XML-Dateien überschreiben möchtest, solltest Du an der Stelle die gleiche Variable eintragen, die Du an der Stelle hast, wo Du die Datei einliest!! And BTW: ... hab ich grad erst drauf geachtet - meistens ist es keine gute Idee, in einer XML-Datei mit einfachen String-Ersetzungen zu arbeiten. Was stört denn an den Attributen?
  17. Das hatten wir doch in Deinem anderen Thread schon mit gezeigt ... wenn Du eine XML-Datei mit ... $XmlData = [xml](Get-Content -Path 'C:\Users\MeinName\Desktop\DE_nv2040.xml') eingelesen hast, kannst Du sie mit .... $XmlData.Save('C:\Users\MeinName\Desktop\DE_nv2040.xml') speichern. Nur dass Du in diesem Fall eben keine direkten Pfade angibst, sondern Variablen.
  18. Für PowerShell-Skripte wäre das möglich. ... es sei denn, ich hab da wieder etwas falsch verstanden.
  19. Wenn ich das als XML-Datei speichere und versuche zu importieren, bekomme ich schon eine Fehlermeldung - Du nicht? PowerShell hält das nicht für valides XML. v7.1.4 : InvalidArgument: Cannot convert value "System.Object[]" to type "System.Xml.XmlDocument". Error: "The specified node cannot be inserted as the valid child of this node, because the specified node is the wrong type." v5.1 Der Wert "System.Object[]" kann nicht in den Typ "System.Xml.XmlDocument" konvertiert werden. Fehler: "Der angegebene Knoten konnte nicht als gültiger untergeordneter Knoten eingefügt werden, da der angegebene Knoten den falschen Typ hat." In Zeile:1 Zeichen:1 + $XmlData = [xml](Get-Content -Path 'D:\sample\DE_nv2040_orig.xml') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [], RuntimeException + FullyQualifiedErrorId : InvalidCastToXmlDocument
  20. Hmmm ... ne ... ohne die Original-Daten habe ich das Problem einfach nicht ... sorry Jetzt kannst Du lernen, wie man ein PowerShell-Skript debugged! https://devblogs.microsoft.com/scripting/debugging-powershell-script-in-visual-studio-code-part-1/ ... oder hier ... 'n Video ...
  21. Tja .. .was soll ich dazu sagen ... ich hab's grad nochmal getestet - sowohl mit PS v5.1 als auch mit v7.1.4. Und was soll ich sagen - es funktioniert mit den Daten, die ich gepostet habe genau so wie ich es gepostet habe.
  22. Oder man hat etwas Vernünftiges gekauft und kann den Server auch per iDRAC oder ILO-Board oder so bedienen.
  23. Willkommen im MCSEboard. Ich hätte die Anfrage eher ins Scripting-Unterforum gestellt, aber sei's drum ... Das würde mich doch sehr wundern, da das schon eine recht spezifische und komplexe Anforderung ist. Dass Du ein Laie bist, heißt ja nicht, dass das auch für alle Zeiten so bleiben muss. Wie gesagt ... bei so spezifischen Abfragen ist es eher unwahrscheinlich, dass schon mal jemand haargenau das Gleiche benötigt hat und das auch noch im Netz veröffentlicht. Aber die ein oder andere Abfrage wird ja vermutlich wenigstens einen Teil Deiner Anforderung erfüllt haben, oder? Poste doch einfach, was Du schon hast und wir schauen mal, ob wir damit ein bissl weiterkommen.
×
×
  • Neu erstellen...