10

I have a collection of objects with properties: ProductName and PartName. The content of collection is output to a file first:

$colProducts | sort-object ProductName | `
   Select-object ProductName PartName | `
   Format-Table -autosize ProductName, PartName | `
   Out-File myProducts.txt 

So far so good. However, I have trouble to append a text message to the result file like this:

Add-Content myProducts.txt "`nParts in more than one Product`n"

I found that the appended text is not readable at the end. One thing I notice is that the output of the first collection to a file is in Unicode, and the second one code (add-content) is in ASCII if only to a new file.

After this, I would like to continue to add the following information the same result file:

$colProducts | Group-object PartName | sort-object PartName | `
   Where-Object {$_.Count -gt 1 } | `
   Select-object ProductName PartName | `
   Format-Table -autosize ProductName, PartName | `
   Out-File myProducts.txt

The above codes will overwrite to the result file. I need to append to the file. Greatly appreciate help!

Update: It is good to know -Append option. How about Add-Content? It seems adding some unreadable chars to the file after Out-File from collection.

Francis Padron
  • 307
  • 2
  • 7
  • 15

3 Answers3

14

I would first try:

$colProducts | Group-object PartName | sort-object PartName | `
  Where-Object {$_.Count -gt 1 } | `
  Select-object ProductName PartName | `
  Format-Table -autosize ProductName, PartName | `
  Out-File -Append myProducts.txt

And then look at this to get a feel for what you were encountering.

Essentially, Out-File (and Out-File -Append) gives you Unicode by default and Add-Content gives ASCII by default. My advice would be stick to the same command and you shouldn't have a problem.

And, of course, help Out-File -Detailed! Always check out the powershell examples because they help a great deal, not just to figure out their common usage, but to grok them as well.

Community
  • 1
  • 1
FLGMwt
  • 706
  • 4
  • 18
4

Try:

$colProducts | Group-object PartName | sort-object PartName | `
   Where-Object {$_.Count -gt 1 } | `
   Select-object ProductName PartName | `
   Format-Table -autosize ProductName, PartName | `
   Out-File -Append myProducts.txt
Hunter Eidson
  • 1,896
  • 14
  • 23
4

Another option:

$colProducts | sort-object ProductName | `
   Select-object ProductName PartName | `
   Format-Table -autosize ProductName, PartName | `
   Out-String | Add-Content myProducts.txt 

Add-Content myProducts.txt "`nParts in more than one Product`n"
mjolinor
  • 66,130
  • 7
  • 114
  • 135