改行のための PowerShell 分割に関する問題

改行のための PowerShell 分割に関する問題

Powershell で、改行に基づいて txt ドキュメントを分割しようとしています。スクリプトは ',' で分割したときには正常に動作しましたが、現在は [Environment]::NewLine を使用するように変更しており、最後の行のみが取得されているようです。

これは、改行で分割する必要があるスクリプトの部分です。

 Get-Content  C:\Bindings.txt | Foreach-Object{
 $hostHeaders = $_.Split([Environment]::NewLine,
 [StringSplitOptions]::RemoveEmptyEntries)
 }

.txt ドキュメントは次のようになります。

http:*:80:test.com 
http:*:80:test2.com 
http:*:80:test1.com

新しい行で分割して最後の行だけを表示しないようにする方法はありますか? それとも何か見落としているのでしょうか?

答え1

3つの方法があります

.txtファイルを用意しました

(Get-Content  C:\temp\Bindings.txt)
http:*:80:test.com 
http:*:80:test2.com 
http:*:80:test1.com

そして今3つの方法

(Get-Content  C:\temp\Bindings.txt) -split"`r`n"
(Get-Content  C:\temp\Bindings.txt) -split "[Environment]::NewLine"
(Get-Content  C:\temp\Bindings.txt).Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries)

結果は次のようになります

http:*:80:test.com 
http:*:80:test2.com 
http:*:80:test1.com

答え2

何もする必要はありません。テキスト ファイルでの Get-Content のデフォルトの動作は、改行で分割し、文字列の配列を返すことです。

PS C:\...\Can Delete 3>Get-Content data.txt
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
PS C:\...\Can Delete 3>$object = Get-Content data.txt
PS C:\...\Can Delete 3>$object.GetType()                                                  
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array


PS C:\...\Can Delete 3>$object.count
3
PS C:\...\Can Delete 3>$object[0]
http:*:80:test.com
PS C:\...\Can Delete 3>$Object | Get-Member                                               

   TypeName: System.String

Name             MemberType            Definition
----             ----------            ----------
...

関連情報