Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

Export-csv(?) powershell

Af Super Nørd Galahat | 05-10-2016 13:14 | 1770 visninger | 15 svar, hop til seneste
Hejsa.. Jeg har et afsnit i et større powershell script, noget som jeg gerne vil have eksporteret, om det er til csv, xml eller txt er sådan set ligemeget, vil bare gerne have at det står ligeså pænt i filen, som det gør på skærmen. ser således ud: $CIs = Get-Content -path C:\Tempt\CIsOnline.csv foreach ($CI in $CIs) { Get-Service -ServiceName 'wuauserv', 'bits', 'winmgmt', 'ccmexec' -ComputerName $CI | select name, status, machinename | sort machinename | format-table -AutoSize } Outputtet i scriptet ser sådan her ud på skærmen: Name Status ?MachineName ---- ------ ----------- BITS Running CcmExec Running Winmgmt Running wuauserv Running (det står selvf lige under hinanden - jeg har fjernet navn) og det vil jeg gerne have smidt ud i en fil, som gør det lidt lettere at overskue med den mængde CI's jeg har at gøre med. Har prøvet en helt masse men uden at opnå det resultat jeg gerne vil. Jeg har overvejet om man kan smide outputtet over i en $ServiceStatus = *SCRIPTET* Også lave en export-csv $ServiceStatus, men er ikke helt skarp nok i PS til at knække den, og google hjælper mig ikke meget med de søgninger jeg har haft held med. //Gala
--
Happy wife, Happy life!
#1
stocker
Bruger Aspirant
05-10-2016 13:43

Rapporter til Admin
$CIs = Get-Content -path C:\TEMP\pstest.csv $status = foreach ($CI in $CIs) { Get-Service -ServiceName 'wuauserv', 'bits', 'winmgmt', 'ccmexec' -ComputerName $CI | select name, status, machinename | sort machinename | format-table -AutoSize } $status | out-file C:\TEMP\test.txt
--
#2
stocker
Bruger Aspirant
05-10-2016 13:55

Rapporter til Admin
Fik ikke lige skrevet forklaringen i først post. foreach loopet understøtter ikke pipelines, så derfor skal du smide outputtet i en variable.
--
Sidst redigeret 05-10-2016 13:55
#3
Galahat
Super Nørd
05-10-2016 17:20

Rapporter til Admin
#1+2 fedt. prøver lige med det samme!
--
Happy wife, Happy life!
#4
Master
Gæst
05-10-2016 17:40

Rapporter til Admin
I stedet for outfile ville jeg bruge export-csv. Det får du et pænere resultat af :) $status | export-csv -Delimiter ';' 'c:\test\test.csv'
--
Gæstebruger, opret dit eget login og få din egen signatur.
#5
Galahat
Super Nørd
05-10-2016 18:45

Rapporter til Admin
Hmm, det virker ikke når jeg smider $Status = foran, jeg får Get-Service : Cannot open Service Control Manager on computer 'XX'. This operation might require other privileges. At line:3 char:1 + Get-Service -ServiceName 'wuauserv*', 'bits*', 'winmgmt*', 'ccmexec*' -ComputerN ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-Service], InvalidOperationException + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.GetServiceCommand Men det er ikke et spørgsmål om rettigheder, for fjerner jeg $status = så ruller det lige igennem. Og jeg har også læse og skrive rettigheder i den folder jeg gerne vil smide min csv fil ud.
--
Happy wife, Happy life!
#6
inckie
Giga Nørd
05-10-2016 19:26

Rapporter til Admin
Du kunne også redirect stdout til en fil ? mitprogram.exe > output.txt 2>&1 således behøves man ikke nødvendigvis at tilføje skriv-til-en-fil funktionalitet til sit program/script.
--
Freelance PHP udvikler - Send PM for mine kontaktoplysninger.
#7
Galahat
Super Nørd
05-10-2016 20:04

Rapporter til Admin
#6 hmm, det er jeg ikke sikker på jeg forstår. Kan du linke til noget jeg måske kunne læse lidt op på?
--
Happy wife, Happy life!
#8
gammelgaard_mink
Monsterbruger
05-10-2016 20:09

Rapporter til Admin
#5 Du mangler rettigheder på de servere du looper igennem. Den CSV fil du looper igennem, prøv blot at have 1 server deri - hvor du så kører scriptet. Den måde #1 gør det på er nok det tætteste du kommer på "pænt PowerShell".
--
Intel 5930k w Noctua NH-D15, MSI Game G6 GTX 980ti, ASRock X99M Extreme 4, Samsung m2 512, Bitfinex Prodigy w Noctua NF-P12 PWM, Corsair 860i PSU
--
Sidst redigeret 05-10-2016 20:11
#9
Galahat
Super Nørd
05-10-2016 20:23

Rapporter til Admin
#8 Hvorfor mangler jeg så ikke rettigheder hvis ikke jeg har $Status = foran min funk i loopet? Jo "pænere" det bliver jo bedre
--
Happy wife, Happy life!
#10
gammelgaard_mink
Monsterbruger
05-10-2016 21:58

Rapporter til Admin
#9 Challenge accepted :)
--
Intel 5930k w Noctua NH-D15, MSI Game G6 GTX 980ti, ASRock X99M Extreme 4, Samsung m2 512, Bitfinex Prodigy w Noctua NF-P12 PWM, Corsair 860i PSU
#11
gammelgaard_mink
Monsterbruger
05-10-2016 22:14

Rapporter til Admin
#9 Din CSV fil med servere skal se sådan her ud: ComputerName server01 server02 Dit PowerShell script skal se således ud: $CIs = Import-Csv "c:\temp\computers.csv" $ServiceStatus = foreach ($CI in $CIs.ComputerName) { Get-Service -ServiceName "Dhcp","Dnscache" -ComputerName $CI | select name, status, machinename | sort machinename | format-table -AutoSize } $ServiceStatus | Out-File c:\temp\ServiceStatus.txt Det giver en tekstfil der ser sådan her ud: Name Status MachineName ---- ------ ----------- Dhcp Running localhost Dnscache Running localhost Name Status MachineName ---- ------ ----------- Dhcp Running server01 Dnscache Running server01
--
Intel 5930k w Noctua NH-D15, MSI Game G6 GTX 980ti, ASRock X99M Extreme 4, Samsung m2 512, Bitfinex Prodigy w Noctua NF-P12 PWM, Corsair 860i PSU
--
Sidst redigeret 05-10-2016 22:16
#12
Galahat
Super Nørd
06-10-2016 08:18

Rapporter til Admin
#11 mmh.. Lad mig lige prøve det en gang :)' Der skal simpelthen være "ComputerName" i den første linie? - hvad har det af betydning.
--
Happy wife, Happy life!
#13
h3mp
Ultra Supporter
06-10-2016 08:23

Rapporter til Admin
#12 Højst sandsynligt positional parameters. Som betyder at Get-Whatever forventer -ComputerName som værende det første parameter
--
/Niels
#14
stocker
Bruger Aspirant
06-10-2016 08:59

Rapporter til Admin
min løsning i #1 virkede på mit lab. Jeg havde bare 3 server navne i csv filen server1 server2 server3 Jeg er domain admin, så det kan selfølgelig spille en rolle. Det hele køres på en windows 10 pc med powershell version PS O:\> $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 5 0 10586 494
--
#15
Galahat
Super Nørd
06-10-2016 15:18

Rapporter til Admin
#13 okay.. #14 jeg er også domain admin. Må lige prøve at kigge nærmere på. Tak for la hjælpen igen. Kan være jeg vækker liv til tråden igen såfremt det skulle blive aktuelt :)
--
Happy wife, Happy life!

Opret svar til indlægget: Export-csv(?) powershell

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning