applicationHost.configファイルで大量のリダイレクトを処理しています。基本的には、リダイレクト ルールを読み取り、ルールの XML 情報を引き出して、確認用のリダイレクト URL を取得できるようにしたいと考えています。IIS 7.5 インスタンスには大量のリダイレクト ルールがあるため、IIS の URLRewrite 機能を使用します。
用意されているルールのリストをエクスポートしたいのですが、applicationHost.config は PowerShell 2.0 を使用した XML であるため (私はまだ 3.0 を使用できません)、ノードを調べてプルするだけでよいはずです。アウト。sectionGroup system.webServer の下にあるものを取得しようとするまでは簡単だと思いましたが、そのノードを引き出そうとすると、値が表示されません。
構成ファイルを見ると、基本的なルールが構造化されています (上記の Microsoft へのリンクに従って):
<rule name="Administration Redirection" enabled="true" stopProcessing="true">
<match url="^administration[/]?.*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Redirect" url="http://www.mysite.fake/{R:0}" />
</rule>
基本的に私は次のようなことをするつもりです:
[xml]$redirectXML = Get-Content $redirectFile
$redirectXML | % {$_.configuration.system.webServer.rewrite.rewriteMaps}
rewriteMap のキーと値を取得したいので、これらのリダイレクトがあり、次のようにルールからキーとリダイレクトされた URL を引き出すことができます。
$redirectXML | % {$_.configuration.system.webServer.rewrite.globalRules.rule}
ここで、 と の値をリンクして、リダイレクト URL の大部分を取得します。
system.webServer がノードを台無しにしているように見えました。名前に。利用可能なように見えるオプションは、sectionGroups を示しているため、configuration.configSections を使用することでした。そのうちの 1 つは system.webServer ですが、必要なセクションを引き出すために正しい形式でノードを取得する方法がわかりませんでした。
これを行う方法、または Get-Content を使用するよりも良い方法はありますか? 以前に他の XML ファイルを作成したことがあり、applicationHost.config の他の PowerShell スクリプトを見たことがありますが、ほとんどは追加用であり、いくつかのノードを抽出するだけです。
ヘルプやポインタをありがとう。
編集:だから、まだ見回しているうちに、 system.webServer を " マークで囲むことで通過できることがわかりました。そのように:
$redirectXMl.configuration."system.webServer".rewrite.rewriteMaps.rewriteMap.add
これにより、リライト マップがキーと値のペアのテーブルのような形で表示されます。ここで、GlobalRules を取得する必要があります。次のように各ルールを取得できます。
$redirectXMl.configuration."system.webServer".rewrite.globalRules.rule
以下が表示されます。
name : Campaign Redirect
enabled : true
stopProcessing : true
match : match
conditions : conditions
action : action
しかし、まだマッチとアクションの値を引き出す必要があります。