vcxy80
Goto Top

Powershell Ausgabe in CSV

Halli Hallo,

ich versuche ein Script zu basteln, welches für alle Server in einem Textfile der OS ermittelt und anschliessend das Ergebnis in einem CSV-File ausgibt. Folgendes hab ich erstellt:


function get-os ($file) {
$names = get-content $file
foreach ($name in $names) {
$name
gmwi win32_OperatingSystem -prop Caption -comp $name
}
}

get-os C:\srvnames.txt ¦ export-csv "C:\srv-os.txt


Leider erhalte ich kein Textfile mit dem Ergebnis - habt Ihr ne Idee was ich da falsch mache?

Danke + Gruss

Content-Key: 119810

Url: https://administrator.de/contentid/119810

Printed on: April 19, 2024 at 16:04 o'clock

Member: TsukiSan
TsukiSan Jul 06, 2009 at 12:21:27 (UTC)
Goto Top
Hallo,

lösche bitte mal das Anführungszeichen vor C:\srv-os.txt
get-os C:\srvnames.txt ¦ export-csv C:\srv-os.txt


Gruß
Tsuki
Member: vcxy80
vcxy80 Jul 06, 2009 at 12:48:18 (UTC)
Goto Top
Grüss Dich,

also so oder:

function get-os ($file) {
$names = get-content $file
foreach ($name in $names) {
$name
gwmi win32_OperatingSystem -prop Caption -comp $name
}
}

$a = get-os
$a ¦ select-object ¦ export-csv -path C:\srv-os.txt


passiert leider nichts...

Wenn ichs manuell in PS-Windows tippsle passiert folgendes:

PS C:\Documents and Settings\userID> function get-os ($file) {
$names = get-content $file
foreach ($name in $names) {
$name
gwmi win32_OperatingSystem -prop Caption -comp $name
}
}

PS C:\Documents and Settings\userID> $a = get-os
Get-Content : Cannot bind argument to parameter 'Path' because it is null.
At line:2 char:25

back-to-top$names = get-content <<<< $file

Get-WmiObject : Cannot validate argument because it is null.
At line:5 char:55

back-to-topgwmi win32_OperatingSystem -prop Caption -comp <<<< $name

PS C:\Documents and Settings\userID>
Member: TsukiSan
TsukiSan Jul 06, 2009 at 13:26:29 (UTC)
Goto Top
Also,Schritt für Schritt.

Welchen Pfad hast du "$File" zugewiesen?
Beispiel:
$File = Get-Content "C:\Test.log"
Da scheint mir in deiner Fehlerausgabe das Problem zu liegen, das Powershell NULL ausgibt. Bitte mal prüfen!
Den Rest schaue ich mal weiter.

Gruß
Tsuki
Ps.: In der Zwischenzeit mal was zum testen face-wink
$Proz = get-process
$Proz | select-object Name,Path,Company | Export-csv -path C:\Prozesse.csv
Member: vcxy80
vcxy80 Jul 07, 2009 at 07:14:23 (UTC)
Goto Top
aaaaaaaaaaaaaalso ich hatte wohl einen Anflug von Blindheit face-wink hatte das falsche Zeichen fürs pipen verwendet - lol // damit hat sich mein Grundproblem erledigt, aber eine Frage hab ich noch, nochmal zum Code:

  1. Also hier die Funktion

PS C:\Documents and Settings\userID> function get-os ($file) {
$names = get-content $file
foreach ($name in $names) {
$name
gwmi win32_operatingsystem -prop caption -comp $name
}
}

  1. Dann der Aufruf der Funktion mit der Angabe des Sourcefiles für $file

get-os C:\srvnames.txt

  1. Soweit funkt das, dann will ich eben den Inhalt in ein CSV-File exportieren

get-os C:\srvnames.txt | Select-Object Caption | export-csv C:\export.txt

  1. Aber natürlich bringt mir "Caption" allein wenig - ich sollte noch den Servernamen dazu anzeigen lassen - blos wie funkt das?

Das geht nicht:

get-os C:\srvnames.txt | Select-Object Name,Caption | export-csv C:\export.txt

Bzw. das auch nicht:

get-os C:\srvnames.txt | Select-Object $Name,Caption | export-csv C:\export.txt

Danke vielmals für die Hilfe!
Member: TsukiSan
TsukiSan Jul 07, 2009 at 08:35:44 (UTC)
Goto Top
Hi,

ersetze mal das KOMMA durch ein Leerzeichen:
get-os C:\srvnames.txt | Select-Object Name Caption | export-csv C:\export.txt
kann jetzt auf die Schnelle nicht testen, aber in meinem Schnipsel habe ich die "Überschriften" für das CSV-File auch nicht durch Komma vom "........object Name,Patth,Company" getrennt.

Gruß
Tsuki

Ps.: ich bin jetzt aber auch blind. Du mlchtest doch anstelle "Caption" den Servernamen haben
probier mal "SET-Caption = XXXX"
ich muss wech. Sorry!
Member: TsukiSan
TsukiSan Jul 07, 2009 at 08:45:05 (UTC)
Goto Top
...also, noch schnell einen Kaffee face-wink
$Caption = "Servername" ' den aus der Datei holen!  
get-os C:\srvnames.txt | Select-Object $Caption | export-csv C:\export.txt
dann müßte "Caption auch beschrieben sein.

Probier mal

Nun aber wirklich wech.
Bis später
Tsuki
Member: vcxy80
vcxy80 Jul 07, 2009 at 10:31:41 (UTC)
Goto Top
Hoi - hat sich bereits erledigt. Hatte zuvor Probleme hier die Lösung zu posten bzw. war schon alles richtig lag an mir - ich Vollnase hatte das falsche zeichen zum pipen verwendet (kommt davon wenn man ein ungewohntes tastaturlayout einsetzt) - also so funkt es (aber vielen Dank für Deine Unterstützung):

function get-os ($file) {
$names = get-content $file
foreach ($name in $names) {
$name
gwmi win32_OperatingSystem -prop Caption,CSName -comp $name
}
}


get-os C:\srvnames.txt | Select-Object CSName,Caption | export-csv C:\export.csv