불행히도 팀 빌드에는 버전 제어와 같은 완전한 클라이언트 개체 모델이 없습니다. 2008 년에는 훨씬 나아졌지만 자체 보안 API는 여전히 부족합니다. 그래서 당신은 서버 전체에서 제공하는 기본적인 웹 서비스 인터페이스에 수준을 사임해야한다 :
: 여기
# add me to the Build Services security group
$tfs = Get-TfsServer njtfs -all
$user = $tfs.gss.ReadIdentityFromSource($tfs.GSS_SearchFactor::AccountName, "rberg")
$uri = $tfs.css.GetProjectFromName("Test-ConchangoV2").uri
$role = $tfs.gss.ListApplicationGroups($uri) | ? { $_.displayname -match "Build" }
$tfs.gss.AddMemberToApplicationGroup($role.Sid, $user.Sid)
# explicitly give me the Administer Builders permission
$ace = new-object $tfs.GSS_AccessControlEntry ADMINISTER_BUILD, $user.Sid, $false
$objectId = [Microsoft.TeamFoundation.PermissionNamespaces]::Project + $Uri
$tfs.AUTH.AddAccessControlEntry($objectId, $ace)
# print build-related ACLs
$tfs.AUTH.ReadAccessControlList($objectId) |
? { $_.actionId -like "*build" } |
ft -auto ActionId, Deny, @{
Label = "Name";
Expression = { $tfs.gss.ReadIdentity($tfs.GSS_SearchFactor::Sid, $_.Sid, $tfs.GSS_QueryMembership::none).DisplayName }
}
불행히도,이 낮은 수준 l API에는 "효과적인 사용 권한"에 대한 원 스톱 쇼핑이 없습니다. Auth 서비스는 제한된 형태의 부모 - 자식 상속뿐만 아니라 여러 그룹 구성원을 통해 사용자에게 적용되는 다양한 ACE를 해결할 수 있지만 버전 제어 계층 구조에 대해서는 알지 못합니다. "공통 구조 "(일명 팀 프로젝트 -> 영역 & 반복) 계층 구조. 다행히 빌드 권한은 오직 한 레벨 (항상 Team Project 루트에 저장되어 있기 때문에)이므로 여러분의 경우에는 문제가되지 않아야합니다.
TFS 버전은 무엇입니까? 05 또는 08? – RobS
사용중인 버전은 TFS 2008입니다. – dabuild