Removing White Space in Array output

This topic contains 1 reply, has 2 voices, and was last updated by Profile photo of tommymaynard tommymaynard 10 months, 3 weeks ago.

  • Author
    Posts
  • #33789
    Profile photo of Vick B
    Vick B
    Participant

    Hello Experts,

    I am having an issue exporting machine sids so I can properly identify that there are no duplicate sids within my environment and keep a archive of machines.

    There is a sample of the code that I am playing with.

    First, I enter in this cmdlet:

    Get-ADComputer -Filter "*" | where {$_.Name -match "client"} | select SID | ft -HideTableHeader >>results1.txt

    See results1.txt.

    As you can see from results1.txt, there are white spaces all over the output. So I then decided to use trim the data by creating a custom variable.

    $a = Get-ADComputer -Filter "*" | where {$_.Name -match "client"} | select SID | ft -HideTableHeaders | Out-String
    $a.Trim() >>results2.txt

    See results2.txt

    As you can see in results2.txt, I successfully trimed the last value however, the first value still has some white space within the output.

    I then proceed to run this output but now it merges all the data.

    $b = $a.Trim()
    $b -replace "\s",""

    If anyone has any suggestions on what I can do, it would be greatly appreciated.

    Thank you.

  • #33790
    Profile photo of tommymaynard
    tommymaynard
    Member

    Here's the thing, the Format-* commands are best left for displaying textual information inside your console — on the screen. When we start putting data into files, we typically (practically always) forgo this set of cmdlets. Enter my example below into your console and see what you get. Replace COMPUTER with the name of a single machine, as it's best to test with one, before you return them all (*).

    (Get-ADComputer -Filter {Name -eq 'COMPUTER'}).SID.Value | Out-File -FilePath results.txt
    

    Edit: Another thing to consider, as I've done above, and now below, is to use the -Filter parameter of Get-ADComputer to do your filtering, instead of filtering with Where-Object. There are some really sound reasons as to why you should do it this way. While you can't use -match, you can use other comparison operators, such as -eq and -like. Take a look.

    (Get-ADComputer -Filter {Name -like '*client*'}).SID.Value | Out-File -FilePath results.txt
    

You must be logged in to reply to this topic.