Пока я работаю над преобразованием SID, я нашел работоспособный скрипт с VirsualSVN, установленным на тестовой машине, но сценарий не работал на сервере. Я сохранил файл как test.vbs поставить на рабочий стол и использовать следующую команду, чтобы выполнить код и произвести вывод в виде текстового файла: Cscript test.vbs> C: \ output.txtСценарий VB для получения отчетов о правах доступа из Visual SVN
На тестовой машине я установил VisualSVN версию 2.5.8 и корневых хранилища на C: \ хранилища
в то время как на сервере, установленной VisualSVN версии 1.6.3 и корневых репозитории на E: \ хранилища
Из приведенного ниже сценария мне не хватает кодирования и не знаю, где мне изменить скрипт, чтобы он работал на сервере? Я ищу вашу экспертную помощь по этому поводу.
'
' Print permissions in the form: user_name,path,level
'
strComputer = "."
Set wmi = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\VisualSVN")
Set win = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
' Return text representation for the Access Level
Function AccessLevelToText(level)
If level = 0 Then
AccessLevelToText = "No Access"
ElseIf level = 1 Then
AccessLevelToText = "Read Only"
ElseIf level = 2 Then
AccessLevelToText = "Read/Write"
Else
AccessLevelToText = "Unknown"
End If
End Function
' Return repository path for the object
Function GetPath(obj)
cname = assoc.Path_.Class
If cname = "VisualSVN_Service" Then
GetPath = "Repositories Root"
ElseIf cname = "VisualSVN_Repository" Then
GetPath = assoc.Name
ElseIf cname = "VisualSVN_RepositoryEntry" Then
GetPath = assoc.RepositoryName & ": " & assoc.Path
Else
GetPath = "Unknown"
End If
End Function
' Convert SID to user name
Function SidToUserName(sid)
Set account = win.Get("Win32_SID.SID='" & sid & "'")
user = account.AccountName
domain = account.ReferencedDomainName
SidToUserName = domain & "\" & user
End Function
' Iterate over all security descriptions
Set objs = wmi.ExecQuery("SELECT * FROM VisualSVN_SecurityDescriptor")
For Each obj In objs
Set assoc = wmi.Get(obj.AssociatedObject)
For Each perm in obj.Permissions
sid = perm.Account.SID
level = AccessLevelToText(perm.AccessLevel)
Wscript.Echo SidToUserName(sid) & "," & GetPath(assoc) & "," & level
Next
Next
Код справки http://www.svnforum.org/threads/38790-Access-Rights-Reporting-in-Subversion-or-Viusal-SVN
Итак, как именно это «не работает»? Как то, что вы получаете, отличается от того, что вы ожидаете? Вы получили сообщение об ошибке? Который? –
На тестовой машине, когда я запускаю команду: ** cscript test.vbs **, она дает результат в формате ** имя_пользователя, путь, уровень **, но на сервере я получаю эту ошибку: test.vbs <5, 1> : 0x8004100E –
luv2bfar
Вы можете принять и/или отложить ответ, если это поможет. Благодаря! – bahrep