在 Powershell 中查看 IIS URL 重写规则

问题描述 投票:0回答:3

所以我有一个基于网络的应用程序,我负责在我们的客户处安装。这需要在 IIS 中进行大量手动配置,而我几乎可以通过 Powershell 完成所有这些工作。但我正在努力解决一件关键的事情,那就是我需要应用的 URL 重写设置。我想到的第一个是添加一条规则,将默认网站转发到特定网站。我用以下方法做到了:

$filterRoot = "system.webServer/rewrite/rules/rule[@name='RootRedirect$_']"
Clear-WebConfiguration -pspath $site -filter $filterRoot
Add-WebConfigurationProperty -pspath $site -filter "system.webServer/rewrite/rules" -name "." -value @{name='RootRedirect' + $_ ;patternSyntax='Regular Expressions';stopProcessing='True'}
Set-WebConfigurationProperty -pspath $site -filter "$filterRoot/match" -name "url" -value "(^$)"
Set-WebConfigurationProperty -pspath $site -filter "$filterRoot/conditions" -name "logicalGrouping" -value "MatchAny"
Set-WebConfigurationProperty -pspath $site -filter "$filterRoot/action" -name "type" -value "Redirect"
Set-WebConfigurationProperty -pspath $site -filter "$filterRoot/action" -name "url" -value "/redirectedlink"

我想弄清楚的第二个问题是如何将任何传入连接重定向到 https。我知道必须输入的设置,所以我最初的想法是手动创建它,然后使用 Get-WebConfigurationProperty 查看这些设置在 PowerShell 中的样子,这样我就知道如何重新创建它们。但我似乎不知道如何获得它们。我当前已配置名称为 HTTPSRedirectTest 的规则,但我不知道如何在 PowerShell 中查看该规则。我找到了有关 Get-WebConfigurationProperty 的各种信息,但找不到与 URL 重写设置相关的任何内容。有人对此有什么建议吗?

powershell https url-rewrite-module
3个回答
0
投票

我发现了这个,它对我有用!

https://dbaland.wordpress.com/2019/02/13/create-a-http-to-https-url-redirect-in-iis-with-powershell/

编辑:最后我想出了这个,我能够弄清楚如何查看设置,但无法弄清楚我到底在看什么。我最终使用上面的链接来想出这个:

#Declare variable for path to default website

    $site = "iis:\sites\Default Web Site"

#Create HTTPS Redirect

    $FilterHTTPSredirect = "system.webServer/rewrite/rules/rule[@name='HTTPSredirect$_']"
    Clear-WebConfiguration -pspath $site -filter $FilterHTTPSredirect
    Add-WebConfigurationProperty -PSPath $site -filter "system.webServer/rewrite/rules" -name '.' -value @{name='HTTPSredirect' + $_ ; patterSyntax='Regular Expressions'; stopProcessing='True'}
    Set-WebConfigurationProperty -PSPath $site -filter "$FilterHTTPSredirect/match" -name 'url' -value "(.*)"
    Set-WebConfigurationProperty -PSPath $site -filter "$FilterHTTPSredirect/conditions" -name '.' -value @{input='{HTTPS}'; matchType='0'; pattern='^OFF$'; ignoreCase='True'; negate='False'}
    Set-WebConfigurationProperty -PSPath $site -filter "$FilterHTTPSredirect/action" -name 'type' -value 'Redirect'
    Set-WebConfigurationProperty -PSPath $site -filter "$FilterHTTPSredirect/action" -name 'url' -value 'https://{HTTP_HOST}{REQUEST_URI}'

#Disable HTTPS Redirect Rule

    set-webconfigurationproperty '/system.webserver/rewrite/rules/rule[@name="HTTPSredirect"]' -Name enabled -Value false -PSPath "IIS:\sites\Default Web Site"

它添加了 https 重定向规则,但也禁用了它,因为并非每个站点都想使用它,并且如果他们确实希望启用它,则需要在其他地方进行其他配置。


0
投票

以下是查看所有本地网站每条规则的操作的示例:

Import-Module WebAdministration

$sites = Get-ItemProperty "IIS:\Sites\*"

foreach ($site in $sites) {
    $siteName = $site.Name
    Write-Host "Site: $siteName"
    $rules = Get-WebConfigurationProperty -Filter "system.webServer/rewrite/rules/rule" -PSPath "IIS:\Sites\$siteName" -Name "."
    foreach ($rule in $rules) {
        Write-Host "`tRule: $($rule.Name)"
        $action = $rule | Select-Object -ExpandProperty action
        Write-Host "`t`tType: $($action.type)"
        Write-Host "`t`tURL: $($action.url)"
    }
}

0
投票

是否可以使用 powershell 仅检查在服务器级别创建的规则?

© www.soinside.com 2019 - 2024. All rights reserved.