cartis 1 Geschrieben 22. Dezember 2021 Autor Melden Teilen Geschrieben 22. Dezember 2021 Hallo BOfH_666, ich bin absolut begeistert. Niemals in den nächsten Monaten hätte ich es soweit geschafft. Kannst du mir noch bei einer Sache helfen? Wie kann ich denn jetzt einen Wert ansprechen? ALso zB den PartlyFileName oder DocumentKey? Beste Grüße Cartis Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. Dezember 2021 Melden Teilen Geschrieben 22. Dezember 2021 vor 7 Minuten schrieb cartis: Niemals in den nächsten Monaten hätte ich es soweit geschafft. Was hoffentlich heißt, dass Du trotzdem weitermachst .... vor 8 Minuten schrieb cartis: Wie kann ich denn jetzt einen Wert ansprechen? Da gibt's generell zwei Ansätze: 1. Indem Du die Funktion oder den Code ausführst, die oder der den Wert gewünschten ausgibt. Das ist normalerweise der Weg, wenn man einen Wert nur einmal braucht. 2. Indem Du den gewünschten Wert in einer Variablen speicherst und diese statt des Wertes verwendest. Das ist der Weg, wenn man einen Wert mehrfach braucht. In PowerShell arbeiten wir mit Objekten und deren Eigenschaften. Wenn Du also einen Befehl ausführst und das Ergebnis-Objekt in der Variable $Objekt speicherst, kannst Du auf die Eigenschaft1 mit der sogenannten "Dot-Notation" $Objekt.Eigenschaft1 darauf zugreifen. Sollte das Ergebnis-Objekt mehr als eine Instanz enthalten, kann man mit einem Index die einzelnen Elemente adressieren - also z.B. $Objekt[0].Eigenschaft1. So, den Rest der Grundlagen holst Du Dir aber bitte aus einem Buch oder Tutorial oder Erklärvideo auf Youtube oder so. Es gibt im Netz zum Thema PowerShell mehr als ausreichend Material. Sehr viele Fragen - auch Anfängerfragen - werden z.B. auf StackOverflow beantwortet. Dort findest Du also schon vieles inklusive Beispielen erklärt. Zitieren Link zu diesem Kommentar
cartis 1 Geschrieben 3. Januar 2022 Autor Melden Teilen Geschrieben 3. Januar 2022 Hallo zusammen und ein frohes neues Jahr wünsche ich Ich möchte mich nochmals bedanken für die zahlreiche Hilfe die ich hier bekommen habe. Habe über die Feiertage einiges gewälzt und mich in Foren informiert. Mir ist auch einiges bewusst geworden. Habe kleine oneliner geschrieben und auch mal ganz andere Lösungen versucht umzusetzen. Habe es auch geschafft etwas weiter in das Thema Variablen einzutauchen. Trotz der tollen Erklärung von BOfH_666 weiß ich dennoch leider immer noch nicht, wie ich zB. den Pfad in der Spalte "FullName" als Variable speichern kann bzw. den Wert als Source für "copy-item" verwenden kann. Wenn ich wie in diesem Beispiel vewendet die Variable $SeparatedGroupList mit der "Dot-Notation" anspreche, dann komme ich mit FullName nicht weiter, anscheinend mache ich da was grundlegend falsch. Könntet ihr mir vielleicht doch nochmal helfen? Beste Grüße Cartis Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 3. Januar 2022 Melden Teilen Geschrieben 3. Januar 2022 (bearbeitet) vor 3 Stunden schrieb cartis: Trotz der tollen Erklärung von BOfH_666 weiß ich dennoch leider immer noch nicht Na, so toll war sie dann wohl offenbar nicht ... vor 3 Stunden schrieb cartis: wie ich zB. den Pfad in der Spalte "FullName" als Variable speichern kann Das ist üblicherweise nicht nötig. Wenn man's doch unbedingt möchte, dann ganz normal mit "$MeineNeueSupiVariable = $Group.FullName". vor 3 Stunden schrieb cartis: bzw. den Wert als Source für "copy-item" verwenden kann. Da es fast immer darum geht, mehrere gleichartige Operationen an gleichartigen Objekten auszuführen und wir dabei entweder die Pipeline-Laufvariable $_ oder $PSItem oder bei einer foreach-Schleife die jeweilige definierte Schleifenvariable zur Verfügung haben, können wir diese bereits existierenden Variablen mit all ihren Properties benutzen. vor 3 Stunden schrieb cartis: Wenn ich wie in diesem Beispiel vewendet die Variable $SeparatedGroupList mit der "Dot-Notation" anspreche, dann komme ich mit FullName nicht weiter, anscheinend mache ich da was grundlegend falsch. Wir würden normalerweise nicht das Array mit allen Elementen ($SeparatedGroupList) benutzen, sondern die Schleifenvariable - in dem Beispiel wäre das also $Group. Demzufolge wäre dann $Group.FullName der Quell-Pfad der in der Schleife aktuell bearbeiteten Datei. Häufig hilft es, wenn man sich die jeweiligen Objekte und Properties einfach auf der Konsole ausgibt. Im Zweifel mit ein bissl "Eye-Candy" drumrum. Beispiel: Get-ChildItem -Path "$env:SystemRoot\system32" -Filter *.dll | Select-Object -Skip 10 -First 5 | ForEach-Object { "Der BaseName der aktuellen Datei ist '$($_.BaseName)', die Produktversion ist '$($PSItem.VersionInfo.ProductVersion)' und die Größe beträgt '$($_.Length)' Bytes" } Ich habe mir angewöhnt, bei solchen Ausgaben, den eigentlichen Inhalt der Variablen in einfache Gänsefüßchen einzuschließen. So würde man führende oder folgende Leerzeichen bemerken, falls das relevant ist. Und man sieht auch, wenn die Variable im Zweifel leer ist, weil dann ein doppeltes einfaches Gänsefüßchen ausgegeben wird. bearbeitet 3. Januar 2022 von BOfH_666 1 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 4. Januar 2022 Melden Teilen Geschrieben 4. Januar 2022 (bearbeitet) So ... ich hab's nochmal gründlich durchdacht und glaube den (Denk)-Fehler gefunden zu haben. Du möchtest gar nicht $Group.FullName haben. Das wären ja auch wieder alle Dateien einer Gruppe. Du wolltest ja nur die Aktuellste, richtig? Also brauchen wir das Ergebnis der "Gruppen-Auswertung" ... also statt ... foreach ($Group in $SeparatedGroupList) { $Group.Group | Sort-Object -Property VersionInt | Select-Object -Last 1 -Property PartlyFileName, DocumentKey, VersionInt, FullName } besser das hier: foreach ($Group in $SeparatedGroupList) { $LastVersionInt = $Group.Group | Sort-Object -Property VersionInt | Select-Object -Last 1 -Property PartlyFileName, DocumentKey, VersionInt, FullName $LastVersionInt.FullName } Besser so? bearbeitet 4. Januar 2022 von BOfH_666 1 Zitieren Link zu diesem Kommentar
cartis 1 Geschrieben 4. Januar 2022 Autor Melden Teilen Geschrieben 4. Januar 2022 Ich fass es nicht, ich habe jetzt in die Schleife noch das cmdlet copy-item mit eingefügt. So funktioniert es wunderbar. Ich werde jetzt versuchen alleine weiter zu kommen. Mal schauen wie gut mir das gelingt. Am Ende werde ich den Code nochmal hier reinstellen :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.