PowerShell keep text formatting when reading in a file

前端 未结 3 1649
花落未央
花落未央 2021-01-11 10:31

I believe this is a simple question, but I can\'t wrap my head around it. I want to do diagnostic commands in command shell on Windows. Like this:

   $cmd =          


        
相关标签:
3条回答
  • 2021-01-11 10:43

    This happens because of your casting. Get-Content returns an object array with a string object per line in the textfile. When you cast it to [string], it joins the objects in the array. The problem is that you don't specify what to join the objects with (e.g. linebreak (backtick)n).

    ipconfig >> test.txt
    
    #Get array of strings. One per line in textfile
    $message = Get-Content test.txt
    
    #Get one string-object with linebreaks
    $message = (Get-Content test.txt) -join "`n"
    
    0 讨论(0)
  • 2021-01-11 10:52

    Cast to an array of strings, maybe. Like this, for your last example:

    $message = @(Get-Content c:\topsecret\testme.txt)
    

    Or this for the second one:

    $message = [string[]](ipconfig)
    
    0 讨论(0)
  • 2021-01-11 11:00

    To read all the data as a single string with the line breaks embedded

    $file = 'c:\testfiles\testfile.txt'
    
    (IPconfig /all) > $file
    
    [IO.File]::ReadAllText($file)
    

    If you have V3, they added the -Raw parameter that will accomplish the same thing:

    Get-Content $file -Raw
    
    0 讨论(0)
提交回复
热议问题