txt exportar create powershell powershell-v2.0

create - ¿Cómo exportar datos a CSV en PowerShell?



out-file powershell csv (4)

Esta solución crea un objeto de búsqueda y agrega cada objeto a una matriz, luego crea el csv canalizando el contenido de la matriz a través de Export-CSV.

$results = @() foreach ($computer in $computerlist) { if((Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet)) { foreach ($file in $REMOVE) { Remove-Item "//$computer/$DESTINATION/$file" -Recurse Copy-Item E:/Code/powershell/shortcuts/* "//$computer/$DESTINATION/" } } else { $details = @{ Date = get-date ComputerName = $Computer Destination = $Destination } $results += New-Object PSObject -Property $details } } $results | export-csv -Path c:/temp/so.csv -NoTypeInformation

Si canaliza un objeto de cadena a un csv obtendrá su longitud escrita en el csv, esto se debe a que estas son propiedades de la cadena. Consulte here para obtener más información.

Es por eso que primero creo un nuevo objeto.

Intente lo siguiente:

write-output "test" | convertto-csv -NoTypeInformation

Esto te dará:

"Length" "4"

Si utiliza Get-Member en Write-Output de la siguiente manera:

write-output "test" | Get-Member -MemberType Property

Verás que tiene una propiedad - ''longitud'':

TypeName: System.String Name MemberType Definition ---- ---------- ---------- Length Property System.Int32 Length {get;}

Esta es la razón por la cual la longitud se escribirá en el archivo csv.

Actualización: Anexar un CSV No es la forma más eficiente si el archivo se hace grande ...

$csvFileName = "c:/temp/so.csv" $results = @() if (Test-Path $csvFileName) { $results += Import-Csv -Path $csvFileName } foreach ($computer in $computerlist) { if((Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet)) { foreach ($file in $REMOVE) { Remove-Item "//$computer/$DESTINATION/$file" -Recurse Copy-Item E:/Code/powershell/shortcuts/* "//$computer/$DESTINATION/" } } else { $details = @{ Date = get-date ComputerName = $Computer Destination = $Destination } $results += New-Object PSObject -Property $details } } $results | export-csv -Path $csvFileName -NoTypeInformation

foreach ($computer in $computerlist) { if((Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet)) { foreach ($file in $REMOVE) { Remove-Item "//$computer/$DESTINATION/$file" -Recurse Copy-Item E:/Code/powershell/shortcuts/* "//$computer/$DESTINATION/" } } else { Write-Host "//$computer/$DESTINATION/" } }

Quiero exportar Write-Host "/ $ computer / $ DESTINATION /" a los archivos CSV para saber qué computadoras estaban fuera de línea cuando se ejecutó el script.

Estoy ejecutando esto desde una máquina con Windows 7


Lo que estás buscando es el Export-Csv file.csv

intente usar Get-Help Export-Csv para ver qué es posible

también funcionará Out-File -FilePath "file.csv"


Siempre puedes usar el

echo "Column1`tColumn2`tColumn3..." >> results.csv

Deberá poner "t" entre las columnas para separar las variables en su propia columna. Esta es la forma en que escribí mi guión:

echo "Host`tState" >> results.csv $names = Get-Content "hostlist.txt" foreach ($name in $names) { $count = 0 $count2 = 13490 if ( Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue ) { echo "$name`tUp" >> results.csv } else { echo "$name`tDown" >> results.csv } $count++ Write-Progress -Activity "Gathering Information" -status "Pinging Hosts..." -percentComplete ($count / $count2 *100) }

Esta es la forma más fácil para mí. La salida que obtengo es:

Host|State ---------- H1 |Up H2 |UP H3 |Down

Puedes jugar con la mirada, pero esa es la idea básica. El recuento de $ es solo una barra de progreso si quieres darle un toque especial al aspecto


simplemente use el cmd de archivo externo, pero NO olvide dar un tipo de codificación: -Encoding UTF8

así que úsalo así:

$log | Out-File -Append C:/as/whatever.csv -Encoding UTF8

-Se requiere una solicitud si desea escribir en el archivo más de una vez.