gelöst Powershell CustomObject richtig verwenden und Verhalten von Variablen bei geschweiften Klammern

Mitglied: Nagus

Nagus (Level 2) - Jetzt verbinden

20.10.2020 um 21:23 Uhr, 660 Aufrufe, 4 Kommentare

Hi zusammen,

vorne weg - ich bin noch am lernen von PS ....

Im Rahmen der Useranlage möchte ich mir ein CustomObject erstellen , in das ich relevante Werte schreibe.

Feste Werte sind die ID und die Email Adresse, welche aus einer CSV eingelesen werden. Mit einer Schleife arbeite ich das ganze ab und erzeuge die User. Nun ich möchte nun pro User ein zufälliges Passwort, dass ich später an bestimmte Personen als Email aus dem Script verschicke.
Das hätte ich nun gerne so wie ich die Daten aus den CSVs lade, nämlich tabellarisch, damit ich die gezielt ansprechen kann.

Soweit so gut. Aber wie schreibe ich jetzt pro Runde in der ein User angelegt wird die neuen Daten in eine neue Zeile? Ich habe mir schon einen Wolfgesucht aber nix gefunden ...

Außerdem verstehe ich nicht, warum ich nur noch Statische Werte erhalte, wenn ich den Block oben in {}-Klammern setze:



Ich dachte die Variablen wären global ....

Thx
Nagus
Mitglied: GrueneSosseMitSpeck
20.10.2020, aktualisiert um 23:36 Uhr
waren sie, bis Powershell 4.0

Vor ein paar Jahren kam dann die Revolution, Variablen hatten plötzlich einen Scope und Subroutinen / Funktionen erfordern zwingend eine Übergabe von allen Parametern.

Ich meine mit Windows 2016 CTP kam PS 5.0 und diese Version konnte das dann endlich... bzw. ich war auch sehr angepisst, denn daß Microsoft in einer Skritpsprache, die es von überallher zusammengeklaut hat, dann so grundsätzliche Dinge ändert, das fand ich schon mal gelinde gesagt gemein.

Damit mein Skript - das diverse Features in OS zwishcen Windows 7 und 2019 aktiviert und dann im IIS ein paar Sites erzeugt - portabel blieb mußte ich die als Parameter übergebenen Variablen umbenennen damit es auf PS4 und PS5 läuft.
Bitte warten ..
Mitglied: TK1987
LÖSUNG 21.10.2020, aktualisiert um 09:59 Uhr
Moin,

warum definierst du die Funktionen Get-RandomCharacters & Scramble-String im Script doppelt? Das ist unnötig, einmal definiert kannst du eine Funktion so oft aufrufen wie du willst.
Zitat von Nagus:

Das funktioniert so zwar, aber hier ein kleiner Tipp, der direkt beide Funktionen vereint:
Hinweis: das % ist ein Alias für Foreach-Object


Soweit so gut. Aber wie schreibe ich jetzt pro Runde in der ein User angelegt wird die neuen Daten in eine neue Zeile?
Wenn du es mit Foreach--Object machst, musst du halt für jede Zeile das PSCustomObject mit den entsprechenden Werten neu erstellen.
Alternativ kannst du jedoch auch mit Select-Object einfach Spalten an einem Object ergänzen, was in deinem Fall mit bestehender CSV-Datei wohl die bessere Wahl wäre.
Die ergänzten Spalten müssen nur folgendem Muster entsprechen:
Hinweis: Name & Expression kann man auch einfach mit n & e abkürzen.

Gehe ich Recht in der Annahme, dass PSTypeName immer gleich sein soll? Das sähe dann am Ende so aus:
Wenn du in deiner Csv-Datei ein anderes Trennzeichen als ein Semikolon verwendest, musst du -Delimiter natürlich anpassen. Darüber hinaus muss du, sofern du keine Spaltenüberschreiften in deiner CSV-Datei hast, noch -Header UserID,EmailEmpfaenger ergänzen.

Außerdem verstehe ich nicht, warum ich nur noch Statische Werte erhalte, wenn ich den Block oben in {}-Klammern setze
Was in Geschweiften Klammern steht wird zum Codeblock und muss dann mit & davor aufgerufen werden, sofern es ausgeführt werden soll. Macht in deinem Fall jedoch wenig Sinn und eine weiterführende Erklärung wäre hier wohl erst mal zu viel Input.

Ich dachte die Variablen wären global ....
Wie ist diese Aussage zu verstehen? Variablen sind per default zum Glück nicht global - so ist es möglich, in Funktionen teils die selben Variablennamen zu nutzen ohne sich Gegenseitig zu stören.
Jedoch können die Variablen auch auf unterschiedliche Weise gesetz werden:
siehe hierzu auch
Gruß Thomas
Bitte warten ..
Mitglied: Nagus
21.10.2020, aktualisiert um 19:30 Uhr
Hi Thomas,
vielen Dank für Deine ausführliche Hilfe!

Eigentlich hatte ich gestern bereits die Lösung gefunden, aber manchmal sieht man ja den Wald vor lauter Bäumen nicht.

Mit dem Export als CSV habe ich schon meine Erfahrungen gemacht ... das war nicht das Problem
Den Rest muss ich noch ein wenig verdauen.

Dank Deiner Hilfe habe ich nun auch noch grob verstanden, wie ich mir Funktionen baue Kann ich die eigentlich an beliebiger stelle im Script ablegen und benutzen? Also beispielweise alle Funktionen am Anfang erstellen und dann später nur noch aufrufen?

Insofern ist Dein Code etwas hübscher

Aber Vielleicht kannst Du mir ja noch einen Hinweis zum CustomObject geben: wofür ist der PSTypeName? Ich habe was dazu gefunden aber nicht kapiert ...

Vielen Dank
Nagus
Bitte warten ..
Mitglied: TK1987
21.10.2020 um 20:05 Uhr
Zitat von Nagus:
Kann ich die eigentlich an beliebiger stelle im Script ablegen und benutzen? Also beispielweise alle Funktionen am Anfang erstellen und dann später nur noch aufrufen?
Ja, sie müssen halt nur zu dem Zeitpunkt, an dem du sie aufrufen möchtest, bereits definiert sein - alle Funktionen am Anfang erstellen geht also wunderbar, alle Funktionen ans Ende des Skripts stellen geht jedoch nicht.

Aber Vielleicht kannst Du mir ja noch einen Hinweis zum CustomObject geben: wofür ist der PSTypeName?
Deiner Frage nach zu urteilen: Für nichts 🤣.

Da du diese Spalte bei dir im Code so definiert hattest, habe ich sie übernommen. Ich habe ja extra oben gefragt, ob die in jeder Zeile den gleichen Inhalt haben soll.

Wenn du diese Spalte also nicht brauchst, lass sie einfach weg.
Bitte warten ..
Heiß diskutierte Inhalte
LAN, WAN, Wireless
Externes Ziel nicht erreichbar vom internen Netzwerk
Stibe88FrageLAN, WAN, Wireless16 Kommentare

Hallo Community Ich habe bei mir Homematic IP installiert. Nun kann ich seit 4 Tagen mich nicht mehr in ...

Hardware
Genauigkeit DCF77
Der-PhilFrageHardware12 Kommentare

Hallo! Es geht hier eher um eine akademische Frage, denn um eine Notwendigkeit für die IT, aber vielleicht interessiert ...

Windows Server
Fehler beim Starten Gruppenrichlinien
gelöst OSelbeckFrageWindows Server11 Kommentare

Hi, seid kurzen habe ich (Ich glaube nach einem Update bzw. Erweiterung der GPO Dateien) folgende Meldung Was köönet ...

Datenbanken
SQL Datum Uhrzeit 2 Spalten
Florian86FrageDatenbanken11 Kommentare

Hallo Zusammen, ich möchte aus einer SAP Datenbank über Datum und Zeit Daten abfragen. Datum und Zeit sind aber ...

Hardware
Neue Hard- und Software für kleine Kanzlei mit RA-Micro
SchrumpfiFrageHardware10 Kommentare

Hallo zusammen, ich lese schon länger im Forum mit und konnte so einige Probleme durch eure Hilfe lösen, dafür ...

Batch & Shell
Zeichen suchen und in die nächste Zeile was kopieren
Klaus20FrageBatch & Shell10 Kommentare

Hallo Forum, hätte mal wieder eine Frage an die Batch Profis. Habe mir mehrere Playlisten erstellt und die immer ...

Ähnliche Inhalte
Batch & Shell
Powershell Skript richtig schreiben
134864FrageBatch & Shell21 Kommentare

Hallo liebe Community, ich arbeite seit einigen Tagen mit der Powershell. Meine Aufgabe ist es ein Skript zu schreiben ...

Batch & Shell

LASTEXITCODE unter PowerShell nicht richtig verstanden

gelöst GruenspechtFrageBatch & Shell5 Kommentare

Um den Bluetooth-Status eines meiner Geräte zu ermitteln, nutze ich BluetoothView v1.66 von NirSoft. Das Tool bietet dazu folgenden ...

Batch & Shell

PowerShell Skript Befehle richtig zuweisen(definieren)

gelöst 135531FrageBatch & Shell5 Kommentare

Hi all, ich bin absoluter Neuling im Thema PowerShell. Ich versuche derzeit eine GUI für DDA (Discrete Device Assignment) ...

Batch & Shell

PowerShell GUI "Start" Knopf, Befehl richtig zuweisen

gelöst 135531FrageBatch & Shell3 Kommentare

Hi all, ich bin momentan dabei eine PowerShell GUI zu bauen um den Standardrucker zu ändern (Die Idee ist ...

Windows Server

Bei Event funktioniert das Powershell Script nicht richtig

gelöst canlotFrageWindows Server14 Kommentare

Hallo liebe Community, ich habe hier ein Powershell Script geschrieben, dass bei der Erstellung eines User in einer OU ...

Windows Server

Richtig lizensiert?

gelöst MiStFrageWindows Server25 Kommentare

Guten Morgen, ich hoffe, dass das keine FR-Frage ist, aber ich habe hier einen virtuellen Windows Server R2 2008 ...

Neue Fragen
Administrator Magazin
11 | 2020 Virtualisierung ist aus der IT nicht mehr wegzudenken. In der November-Ausgabe des IT-Administrator Magazins dreht sich der Schwerpunkt um das Thema "Server- und Storage-Virtualisierung". Darin erfahren Sie, wie sich die Virtualisierungstechnologie entwickelt hat, welche Varianten es im Bereich Server und Speicher gibt und wie ...
Neue Beiträge
Neue Jobangebote
Server- und Storage-VirtualisierungServer- und Storage-VirtualisierungBerechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid Cloud