SOLVED

Powershell > Output to .txt as one string

Iron Contributor

I have a powershell script that loops a fileshare and reports the properties of all the files.

This part reports to a .txt file:

Get-ChildItem -Recurse $source |  ?{-not $_.PSIsContainer} | ForEach-Object {Audit-File $_} | Sort-Object fullname | Select FullName,CreationTime,LastWriteTime,Length,Owner | Out-File C:\filename.txt

The output is something like this:

FullName                  : C:\temp\testfile
CreationTime            : 30-6-2017 13:34:16
LastWriteTime           : 8-9-2014 17:15:57
Length                    : 5752832
Owner                     : BLA\bla.bla
Author                    : 

But I would like to have something like this:

FullName,C:\temp\testfile,CreationTime,30-6-2017 13:34:16,LastWriteTime,8-9-2014 17:15:57,Length,5752832,Owner,BLA\bla.bla,Author 

So one line for each record.

I cannot use a .csv as this cannot handle things like "é", etc.

 

4 Replies

Use the -Encoding parameter with Export-CSV, it works just fine. For example:

 

Export-Csv -NTI blabla.csv -Encoding Unicode

Hi @Vasil Michev

If I do so, my text will be changed.

 

For example "énter" will be changed to "?nter". Has something to do with utf encoding.

You can change the encoding to UTF8 or other, as necessary. Unicode works just fine with énter for example.

best response confirmed by Mike Jansen (Iron Contributor)
Solution

Try this script for output with txt file

 

$Details=Get-ChildItem -Recurse $source |  ?{-not $_.PSIsContainer} | ForEach-Object {Audit-File $_} | Sort-Object fullname | Select FullName,CreationTime,LastWriteTime,Length,Owner 
 
 $Outputs =@()
 ForEach($Detail in $Details)
 
 {

 $Output = "Fullname,"+$Detail.FullName+",CreationTime,"+$Detail.CreationTime+",LastWriteTime ,"+ $Detail.LastWriteTime+",Length ,"+"$Detail.Length"+ ",Owner,"+$Detail.Owner
 $Outputs +=$Output

 }
 $Outputs | Out-File C:\filename.txt 

 

1 best response

Accepted Solutions
best response confirmed by Mike Jansen (Iron Contributor)
Solution

Try this script for output with txt file

 

$Details=Get-ChildItem -Recurse $source |  ?{-not $_.PSIsContainer} | ForEach-Object {Audit-File $_} | Sort-Object fullname | Select FullName,CreationTime,LastWriteTime,Length,Owner 
 
 $Outputs =@()
 ForEach($Detail in $Details)
 
 {

 $Output = "Fullname,"+$Detail.FullName+",CreationTime,"+$Detail.CreationTime+",LastWriteTime ,"+ $Detail.LastWriteTime+",Length ,"+"$Detail.Length"+ ",Owner,"+$Detail.Owner
 $Outputs +=$Output

 }
 $Outputs | Out-File C:\filename.txt 

 

View solution in original post