Forum Discussion

Mike Jansen's avatar
Mike Jansen
Iron Contributor
Jul 03, 2017
Solved

Powershell > Output to .txt as one string

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.

 

  • 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 

     

  • 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 

     

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

     

    Export-Csv -NTI blabla.csv -Encoding Unicode

    • Mike Jansen's avatar
      Mike Jansen
      Iron Contributor

      Hi VasilMichev

      If I do so, my text will be changed.

       

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

      • VasilMichev's avatar
        VasilMichev
        MVP

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

Resources