powershell - SVN pre-revprop-change 挂钩脚本,与活动目录组一起使用
问题描述
我一直在寻找类似的东西,但并不幸运。
我正在使用 VisualSVN 服务器并希望有一个 pre-revprop-change 钩子,它只允许 certan 活动目录组的用户编辑日志消息。
我有一个本地组成员的工作脚本:
#pre-revprop-change.ps1
# Function check if $user is a member of $group
function Check-GroupMembership
{
param([string]$group, [string]$user)
$server = get-content env:COMPUTERNAME
$query = [ADSI]("WinNT://$server/$group,group")
$ulist = $query.psbase.invoke("Members") |`
%{$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
$ulist -contains $user
}
# Store hook arguments into variables with mnemonic names
$repos = $args[0]
$rev = $args[1]
$user = $args[2]
$propname = $args[3]
$action = $args[4]
# Check user's group membership and deny revprop changes if a user does not belong to the svn_test group
if (-not (Check-GroupMembership "svn_test" $user))
{
[Console]::Error.WriteLine("You are not allowed to change revision properties.")
exit 1
}
exit 0
#pre-revprop-change.bat
[[[
@echo off
set PWSH=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
%PWSH% -command $input ^| %1\hooks\pre-revprop-change.ps1 %1 %2 %3 %4 %5
if errorlevel 1 exit %errorlevel%
]]]
我很确定 powershell 可以做到这一点,但不幸的是我不是 PS 专家。:)
谢谢!
解决方案
您可以创建一个本地 Windows 组并将那些应该有权更改修订属性的域用户添加到该组。例如,创建一个名为“vsvn-revprop-reponame-group”的本地组。然后将域用户添加到此本地组。
推荐阅读
- java - 如何使用 apache poi 从 PowerPoint 访问文本/段落
- mongodb - 设计 MongoDB 文档以获得所需的 Neo4j 图形
- scala - spark DataFrameWriter 最新版本
- ajax - Axios:搁置请求
- highcharts - 将图像添加到 Highmaps 中的工具提示
- http - 如何从其他来源向 App Engine 服务发出经过身份验证的 PUT 请求
- r - R:寻找优化后向选择算法的建议
- openedge - 如何计算一个正在进行的4GL字段的总和?
- c# - 通过反射调用方法失败
- c# - 如何将对象的属性绑定到 WPF 控件?