繁体   English   中英

Powershell 检查是否在.Net授权规则中添加了用户或角色

[英]Powershell Check if a User or Role is added to .Net authorization rules

我正在尝试自动化将用户或角色添加到 .NET 授权规则的过程。 我可以成功执行这个命令来添加用户和角色。

.\appcmd set config 'Default Web Site/TestApp' /section:system.webServer/security/authorization /+"[accessType='Allow',roles='Admin,Guest',users='User1,User2,User3']"

但是,我希望能够在运行上述命令之前检查用户或角色是否已添加到“允许”规则中。

当我运行“列表配置”命令时:

.\appcmd list config 'Default Web Site/TestApp' /section:system.webServer/security/authorization

我得到这个结果:

PS C:\windows\system32\inetsrv> .\appcmd list config 'Default Web Site/TestApp' /section:system.webServer/security/authorization 

<system.webServer>
  <security>
    <authorization>
      <add accessType="Allow" users="User1,User2" roles="Admin,Guest" />
      <add accessType="Allow" users="User3" roles="" />
    </authorization>
  </security>
</system.webServer>

但是如果 $user 已经存在或不存在,我不知道如何返回“true”或“false”。 请帮忙。

您可以使用Select-Xml从 xml 中获取添加对象。 然后您可以检查您的用户、角色或用户/角色组合。 我用下面的 function 证明了这一点

Function Check-UserOrRoleExists {
    [cmdletbinding()]
    param(
        $User,
        $Role,
        $AppAuthConfig
        
        )
        $authorizations = Select-Xml -Content $AppAuthConfig -XPath '//authorization//add' | Select-Object -ExpandProperty node
        
        $result = if ($User -and $Role) {
            $authorizations | Where-Object { ($_.users -match $User + '(?:,|$)') -and ($_.roles -match $Role + '(?:,|$)') }
        }
        elseif ($User) {
            $authorizations | Where-Object { ($_.users -match $User + '(?:,|$)') }
        }
        elseif ($Role) {
            $authorizations | Where-Object { $_.roles -match $Role + '(?:,|$)' }
        }
        
        [bool]$result
    }

用法和Output

# Capture response from appcmd
    $response = .\appcmd list config 'Default Web Site/TestApp' /section:system.webServer/security/authorization

PS > Check-UserOrRoleExists -AppAuthConfig $response -User User1

True
PS > Check-UserOrRoleExists -AppAuthConfig $response -User User4

False
PS > Check-UserOrRoleExists -AppAuthConfig $response -User User3 -Role admin

False
PS > Check-UserOrRoleExists -AppAuthConfig $response -User User1 -Role admin

True
PS > Check-UserOrRoleExists -AppAuthConfig $response -Role admin            

True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM