2017-03-17 80 views
1

下午好,我正在修改一個首選項文件,以使用powershell腳本重置默認的縮放比例,稍後將由gpo部署。使用正則表達式替換文件中的Powershell

該策略是刪除負責默認縮放的部分設置。手工完成後,它會很好地工作。但是,通過此腳本,我收到一條消息,說明首選項文件不正確。

代碼:

#Déclarations 
$preferencePath = Join-Path $env:USERPROFILE      'AppData\Local\Google\Chrome\User Data\Default\Preferences' 
$newPreferencePath = Join-Path $env:USERPROFILE 'AppData\Local\Google\Chrome\User Data\Default\newpref.txt' 
$regex = '("default_zoom_level":)[^\s]\d*.\d*(":)\d*.\d*(},)' 

#Créer la version corrigé du fichier de préférence 
Get-Content -path $preferencePath | % { $_ -Replace $regex , '' } | Out- File $newPreferencePath 

#Renomme les fichiers pour que le bon soit pris en compte 
Rename-Item $preferencePath "PreferencesBAK" 
Rename-Item $newPreferencePath "Preferences" 

有人能解釋什麼是錯的代碼?

謝謝!

回答

1

原來問題出在替換功能上。阿洛斯,編碼是ASCII。這裏是工作代碼或那些有興趣的:

#Déclarations 
$preferencePath = Join-Path $env:USERPROFILE 'AppData\Local\Google\Chrome\User Data\Default\Preferences' 
$newPreferencePath = Join-Path $env:USERPROFILE 'AppData\Local\Google\Chrome\User Data\Default\newpref.txt' 
$oldPrefFile = Join-Path $env:USERPROFILE 'AppData\Local\Google\Chrome\User Data\Default\PreferencesBAK' 
$regex = '("default_zoom_level":)[^\s]\d*.\d*(":)\d*.\d*(},)' 

#Créer la version corrigé du fichier de préférence 
Get-Content -path $preferencePath | % { $_ -Replace $regex , ' ' } | Out-File -Encoding ASCII $newPreferencePath 

#Renomme les fichiers pour que le bon soit pris en compte 
if (Test-Path $oldPrefFile) { 
    Remove-Item $oldPrefFile 
} 
Rename-Item $preferencePath "PreferencesBAK" 
Rename-Item $newPreferencePath "Preferences" 
+0

我看你還沒有做到它,只是想讓你知道你可以點擊灰色複選標記來接受你自己的答案,那樣對社區更好。 –

3

請注意,Out-File默認爲UTF-16LE作爲文件編碼。很可能你需要把它寫成UTF-8而不是(預先檢查文件的編碼):

... | Out-File -Encoding UTF8 $newPreferencePath