[Powershell] Alle Daten aus Array formatiert ausgeben

typus

Ensign
Registriert
Apr. 2012
Beiträge
194
Hallo,

Ich steh heute irgendwie auf dem Schlauch, ich möchte alle Daten aus u.g. Array formatiert in eine Zeile schreiben:

Code:
$get_hiddenfiles= @(Get-ChildItem C:\Users\abc\*.* -force | Where-Object {$_.mode -match "h"} | Select-Object -expandProperty Name)

Ausgabe soll so aussehen:

Code:
$exlude = @('$get_hiddenfiles[0]','$get_hiddenfiles[1]'.....)

@('NTUSER.DAT','ntuser.ini')

Außerdem soll er anhand von $get_hiddenfiles.length die Daten ausgeben, falls sich die Anzahl der Dateien mal ändert. Lang lang ist her, daher hoffe ich auf Hilfe von euch.

Mfg
 
Dein Array ist doch schon korrekt gefüllt.
Bei deiner Beschreibung was du als Ausgabe willst bin ich etwas verwirrt.

$exlude = @('$get_hiddenfiles[0]','$get_hiddenfiles[1]'.....) ist das gleiche wie $exclude = $get_hiddenfiles.
Du schreibst ja jedes element an der gleichen Stelle in ein neues Array, also machst du einfach eine Kopie.
Das einzige Problem sind die Hochkommata. Dadurch wird das als String gespeichert. Wenn du den Inhalt speichern willst (also den Dateinamen), lass die einfach weg.
Code:
$exlude = @($get_hiddenfiles[0],$get_hiddenfiles[1].....)
Aber das ist wie gesagt nur eine Kopie des Ursprungsarrays...

Wenn du mit $get_hiddenfiles.length auf Änderungen prüfen willst, musst du aber den Zustand vor der letzten Ausführung speichern (oder zumindest die Anzahl). Wenn du das in Echtzeit machen willst, gäbe es die Möglichkeit einen Listener zu erstellen der auf Änderungen in dem Ordner achtet.
Aus deiner Beschreibung kann ich nicht sehen, was du genau bezweckst.
 
Wie, formatiert? Und wie schreiben? Wohin? Bei PS macht es einen Unterschied, ob das irgendwo landen soll und ggf als was oder nicht.


Code:
# Formatierte Ausgabe, Ergebnis wäre wieder ein Array, wenn man es weiterverwendet/zuweist
$sep_template = "Dieses Array-Element ist {0}";
$array | 
% {
$sep_template  -f $_.ToString() # in der Hoffnung, daß die Array-Elemente als String auszugeben gehen, sonst steht sowas wie System.Object da
}

# Oder als String, der natürlich eher schwer weiterzuverarbeiten geht:
$first = 'Erstes Array-Element ist';
$sep = ', das folgende Array-Element ist ';
$terminator = "(Array-Ende)"

$ergebnis = '{0}{1}{2}' -f $ $sep, [String]::Join($sep, $array), $terminator;
 
Danke für die Antworten, ich war einfach zu blöd. Hatte das Array schon richtig formatiert, hätte es mir nur mal ausgeben müssen... :)
 
Zurück
Oben