2014-11-14 86 views
1

我在PowerShell中這樣做:uUable使用命令「SFC/SCANNOW」的輸出在PowerShell中

$SFC = SFC /scannow 

write-output $SFC | out-file d:\cours\powershell\SFC.txt 

$string = 'd i d n o t f i n d a n y i n t e g r i t y v i o l a t i o n s' 

$test = $false 
$SFC | foreach {If ($_.name -match $string) {$test = $true}} 


if ($test -eq $false) {write-host 'Ok'} 

什麼是文件「SFC.txt」中是不可讀的記事本++。

更多,$test總是等於$false(事實並非如此)。

如何在我的文件中正確保存輸出以便能夠讀取它以及如何測試此輸出?

+0

張貼這個問題之前,請確保TBAT,我已經試過參數編碼的所有選項。 -encoding ASCII不是訣竅。 我只能使用write-host命令正確讀取控制檯上的輸出。就這樣。 另外,我無法在這個愚蠢的命令「SFC/scannow」的輸出中找到任何字符串。 這很奇怪。當我通過另一個命令(例如:DIR)更改命令「SFC」時,該腳本就像一個魅力。 您可以驗證自己,但必須以管理員身份運行powershell ise。 SFC命令和所有其他命令之間有什麼不同? – x30204 2014-11-15 17:27:16

回答

0

Out-File默認爲以Unicode編寫。你可以用-Encoding ASCII來改變它。

您還可以使用Set-Content,默認爲ASCII。

您可能也可以告訴Notepad ++將該文件解釋爲Unicode,但我不熟悉如何操作。

0

請務必在發佈此問題之前tbat,我已經嘗試了參數編碼的所有選項。

-encoding ASCII不是訣竅。

我只能使用write-host命令正確讀取控制檯上的輸出。就這樣。

另外,我無法在這個愚蠢的命令「SFC/scannow」的輸出中找到任何字符串。

這很奇怪。當我通過另一個命令(例如:DIR)更改命令「SFC」時,該腳本就像一個魅力。

您可以驗證自己,但必須以管理員身份運行powershell ise。

SFC命令和所有其他命令之間有什麼不同?

0

我一直在玩這個,發現-match的作品。它使用正則表達式,因此您可以使用句點來替換任何單個字符。

嘗試: $string -match '.f.i.n.d...a.n.y...i.n.t.e.g.r.i.t.y...v.i.o.l.a.t.i.o.n.s.'