我有一个包含多个占位符的配置文件,我希望使用PowerShell替换其他一些值,但是下面的代码无法用%WebClientPath%\www
变量中包含的值替换$WebClientPath
。它有这个路径“ C:\ IWeb \ Demo \ Main \ UIPresentation \ WebApp ”
其中%VirtualApplicationName%
被 IMWeb
我尝试从%WebClientPath%
删除 \ www ,但它确实有效,但我希望 \ www 也可以替换。我认为这是因为反斜杠(\)
[CmdletBinding()]
Param
(
[string]$PathofWebConfigFile="C:\Automate\Web.config" ,
[string]$VirtualApplicationName="IMWeb"
)
# Code to get WebClient Path from PhysicalPath attribute.
$WebClientPath=(get-webapplication IMWeb).PhysicalPath
(Get-Content -Path "$PathofWebConfigFile") | ForEach-Object {$_ -Replace "%VirtualApplicationName%","$VirtualApplicationName"} | Set-Content -Path "$PathofWebConfigFile"
(Get-Content -Path "$PathofWebConfigFile") | ForEach-Object {$_ -Replace "%WebClientPath%\www","$WebClientPath"} | Set-Content -Path "$PathofWebConfigFile"
答案 0 :(得分:2)
斜杠NOFALLOC := $(shell echo "\#include <fcntl.h>\nint main() { posix_fallocate(0,0,0);}" | $(CC) -o /dev/null -Werror -xc - >/dev/null 2>/dev/null && echo 0 || echo 1)
ifeq "$(NOFALLOC)" "1"
DFLAGS += -DNO_POSIX_FALLOCATE
endif
通过双斜杠\
进行转义,请尝试以下操作:
\\
此cmdlet会将"mypath\www" -replace "\\www","\zzz"
替换为\www
。
答案 1 :(得分:0)
只是为了快速概述如何在字符串
中使用正则表达式的转义序列字符$currenttext = "\www.google.com"
echo "$currenttext"
$currenttext2 = [Regex]::Escape($currenttext)
echo "escaped : $currenttext2"
$newtext = "www.yahoo.com"
$currenttext2 = $currenttext2.replace($currenttext2, $newtext)
echo "$currenttext2"
答案 2 :(得分:0)
-replace
运算符基于RegEx,因此您要么
[Regex]::Escape()
您可以使用String.Replace方法,该方法不是基于RegEx的方法:
$_.Replace("%WebClientPath%\www","$WebClientPath")