2016-04-27 16 views
0

我有一個包含兩個單獨部分的文本文件(下面的示例)。我想編寫一個powershell cmdlet,它將爲每個部分中的機器做一些不同的事情。一如既往,謝謝!Powershell - 閱讀文本文件的單獨部分

[Templates] 
Computer1 
Computer2 

[Parents] 
Computer3 
Computer4 

回答

0

這是我以前用過的東西。你可以使用它適合你的情況

$file = 'C:\temp\new 1.txt' 
$contents = Get-Content $file | Out-String 
$contents = [regex]::Split($contents, '\r\n\r\n') 

$contents | ? {$_} | sort | % { 
    write-host this is a section 
    write-host $_ 
} 
+0

你能解釋這是如何工作的嗎? – Rico

+0

get-content會自動將回車換行中的文件內容分割成一個數組,因此它被傳送到out-string,以便所有行都是單個字符串對象而不是字符串數組。那麼我們把所有東西都分成空行,這將是兩個回車換行符,一個緊接着另一個(\ r \ n \ r \ n),所以現在我們有一個字符串數組,重新尋找。 '? {$ _}'部分只是過濾掉它們之間有多條空行的空白部分,如果您不希望您的部分排序,則可以刪除該部分。 –

+0

完美的解釋,謝謝安東尼! – Rico