Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 使用参数设置WebConfiguration属性_Powershell_Iis_Web Config - Fatal编程技术网

Powershell 使用参数设置WebConfiguration属性

Powershell 使用参数设置WebConfiguration属性,powershell,iis,web-config,Powershell,Iis,Web Config,如果我运行下面的脚本;在MySite上创建了一个名为RuleName的规则,并为其设置了匹配URL规则: $PSPath = 'IIS:\Sites\MySite' Add-WebConfigurationProperty -PSPath $PSPath -filter "system.webServer/rewrite/rules" -name '.' -value @{name='RuleName'; patterSyntax='Regular Expressions'; stopPro

如果我运行下面的脚本;在MySite上创建了一个名为RuleName的规则,并为其设置了匹配URL规则:

$PSPath = 'IIS:\Sites\MySite'

Add-WebConfigurationProperty -PSPath $PSPath  -filter "system.webServer/rewrite/rules" -name '.' -value @{name='RuleName'; patterSyntax='Regular Expressions'; stopProcessing='True'}; 
Set-WebConfigurationProperty -PSPath $PSPath -filter "system.webServer/rewrite/rules/rule[@name='RuleName']/match" -name 'url' -value '(.*)';
如果在运行此脚本时将规则名称参数化,或将整个
-filter
作为参数,则会出现以下错误:

警告:在路径“MACHINE/WEBROOT/APPHOST/MySite”中找不到目标配置对象“system.webServer/rewrite/rules/rule[@name='RuleName']/match”

该规则是在
addwebconfigurationproperty
部分创建的,但之后我无法对其进行编辑


关于参数化的属性中是否有我遗漏的东西会打破这一点?

我为所有感兴趣的人解决了这个问题

它看起来像是
设置WebConfigurationProperty
添加WebConfigurationProperty
以不同的方式处理规则名称。对于添加,名称“RuleName”将创建一个名为“RuleName”的规则,然后在编辑规则“RuleName”(参数化)时,搜索不带引号的“RuleName”,但没有找到它。我通过以下两个参数解决了这个问题:

$RuleName1 = 'RuleName'
$RuleName2 = "'RuleName'"

$PSPath = 'IIS:\Sites\' + $SitePath

Add-WebConfigurationProperty -PSPath $PSPath  -filter "system.webServer/rewrite/rules" -name '.' -value @{name=$RuleName1; patterSyntax='Regular Expressions'; stopProcessing='True'}; 
Set-WebConfigurationProperty -PSPath $PSPath -filter "system.webServer/rewrite/rules/rule[@name=$RuleName2]/match" -name 'url' -value (.*); 
这正如预期的那样有效