你好,我在很多服务器上都有一个像这样结尾的配置文件,所以我需要在行的开头添加#
"C: \Documents and Settings\All Users\Application Data\McAfee \DesktopProtection\UpdateLog.txt"8小时警告*0800 1800
"C: \EURNTCC\macafee\successfull update.log.txt"8小时警告*0800 1800
我做了一个类似的小脚本
$file="\serverC$ositetcact_mon.cfg"
$text1='"C:DOCUMENTS AND SETTINGSALL USERSAPPLICATION DATAMCAFEEDESKTOPPROTECTIONUPDATELOG.TXT"'
$text2='"C:EURNTCCMCAFEESUCESSFULL-UPDATE.LOG.TXT"'
(gc $file) -replace $text2 ,("#" + $text1) |Set-Content $file
(gc $file) -replace $text2 ,("#" + $text2) |Set-Content $file
我有这个错误任何帮助来理解这个错误,我有650服务器来更新
正则表达式模式";C: \EURNTCC\MCAFEE\SUCESSFULL-UPDATE.LOG.TXT";无效。在行:1个字符:1个
- (gc$file(-替换$text1,("#"+$text1(|设置内容$file
+ CategoryInfo : InvalidOperation: ("C:EURNTCCMCA...UPDATE.LOG.TXT":String) [], RuntimeException + FullyQualifiedErrorId : InvalidRegularExpression
-replace
使用Regex。您希望它搜索的字符串在正则表达式中具有特殊含义,需要以反斜杠为前缀。(最显著的是点和反斜杠(
您不必手动执行此操作,但可以使用[regex]
类型加速器中的静态方法Escape()
:
$text1 = '"C:DOCUMENTS AND SETTINGSALL USERSAPPLICATION DATAMCAFEEDESKTOPPROTECTIONUPDATELOG.TXT"'
$text2 = '"C:EURNTCCMCAFEESUCESSFULL-UPDATE.LOG.TXT"'
$search1 = [regex]::Escape($text1)
$search2 = [regex]::Escape($text2)
此外,您可以链接replace
,这样您就不必获得两次内容:
(Get-Content $file) -replace $search1 ,("#" + $text1) -replace $search2 ,("#" + $text2) | Set-Content $file