none
Скрипт Создание папки по названию OU в котором находится пользователь

Все ответы

  • это праймари групп чтоли? а нафига такое надо?
    7 февраля 2019 г. 7:10
  • да Primary Group


    7 февраля 2019 г. 7:51
  • вам скрипт нужен без разницы на каком языке? И вы точно знаете, зачем вы изменяете primary group?

    7 февраля 2019 г. 7:58
  • желательно на английском

    да именно поэтому ищу под Primary Group

    7 февраля 2019 г. 8:27
  • ясно все с вами... скрипт к сожалению не на английском а на повершелле :-)

    я так понял вам пофигу какой язык не знать :-)

    набросал на коленке под свой повершелл, нужен модуль AD

    $pfolder="C:\temp\"

    # just added this comment to correct Posh coloring on forums" $user="testuser" $domain="contoso.local" #Get-ADUser -Identity $user -Properties primaryGroupID| select primaryGroupID $prid=((Get-ADUser -Identity auto30 -Properties primaryGroupID).primaryGroupID).tostring() $dsid=((Get-ADDomain -Identity $domain).domainsid).tostring() $prgroup=Get-ADGroup -Identity $("$dsid-$prid") $newfolder="$pfolder$($prgroup.name)" if (test-path $newfolder){ echo "Folder is already exists, blyat" }else{ mkdir -path $newfolder} $acl=Get-acl -path $newfolder $acl.SetAccessRuleProtection($False,$False) # next line remove all inherited permissions, uncomment it if needed, and comment previous one # $acl.SetAccessRuleProtection($True, $False) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($prgroup.sid,"ReadAndExecute", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) $acl|set-acl $newfolder



    • Изменено Svolotch 7 февраля 2019 г. 12:32
    7 февраля 2019 г. 12:02
  • этот скрипт не помог может какие то переделки или добавления можно сделать на этом скрипте:

    Set objNet = WScript.CreateObject("WScript.Network") 
    Set FSO = CreateObject("scripting.filesystemobject")
    Set objSysInfo =CreateObject("ADSystemInfo")
    Set objUser =GetObject("LDAP://"& objSysInfo.UserName) 

    sUserName = objUser.displayName
    sSAMName = objUser.sAMAccountName   
    sDomainName = objNet.UserDomain 

    folderToCheckFor = "\\file\full_share\" & sUserName 
    If (FSO.FolderExists(folderToCheckFor)) = False Then 
    FSO.CreateFolder(folderToCheckFor) 
    Set WshShell = WScript.CreateObject("WScript.Shell") 
    Call WshShell.Run("CACLS " & Chr(34) & folderToCheckFor & Chr(34) & " /T /E /C /G " & sDomainName & "\" & sSAMName & ":F",2,True) 
    Call WshShell.Run("CACLS " & Chr(34) & folderToCheckFor & Chr(34) & " /T /E /C /G " & sDomainName & "\Domain Admins:F",2,True) 
    Call WshShell.Run("CACLS " & Chr(34) & folderToCheckFor & Chr(34) & " /T /E /C /G " & sDomainName & "\GLOBAL_SUPERVISORS:F",2,True) 
    Set WshShell = nothing 
    End If 

    Set FSO = nothing 
    Set objNet = nothing


    8 февраля 2019 г. 6:27
  • Я же вас вчера человеческим языком спрашивал на каком языке вам скрипт написать.

    Тот скрипт который вы привели в качестве примера, мы вам уже правили.

    VBS давно уже не торт, я в последний раз на нем скрипты рисовал минимум года три назад, а то и больше.

    У вас не получилось запустить тот что я привел вам выше(Powershell)? 

    У меня складывается впечатление что вы немножко не понимаете что вы делаете и как. (в том числе и про примари группы тоже). В случае если у вас пользователи могут сами создавать папки, допустим на сетевой шаре, вы и без скриптов на корень можете повесить такие пермишены, что новосозданные папки уже будут содержать примари группу того пользователя кто создал папку(хотя и не без плясок с бубном).

    Ладно попробую на досуге переписать под vbs, если мне не будет слишком лениво.

    8 февраля 2019 г. 8:00
  • я написал что желательно на английском

    да я новичок в этих скриптах поэтому не очень шарю 

    предыдущий скрипт заработал

    или как то можно указать в пути к папке название по Primary Group AD? 

    8 февраля 2019 г. 8:37
  • скрипты по сути программы, программы пишутся на разных языках.. в частности ваш пример - это скрипт написанный на VBS(Visual Basic Script), тот вариант что я изначально предложил был написан на Powershell'е.

    атрибут "Primary Group AD" - в отличии об обычных групп, это просто число, по которому можно вычислить группу которая под  ним скрывается. (взять SID домена, поставить тире затем это число, получится SID группы по которому уже можно вычислить имя группы)

    также с примари групп можно работать в пермишенах через графическую оболочку - например если в наследовании пермишенов вместо конкретитики указать встроенную группу безопасности Creator_Group(Группа-Создатель в русской винде), но при создании обьектов будет подставляться уже примари группа пользователя создавшего обьект. 

    8 февраля 2019 г. 9:46
  • ладно а можно по названию организационной единицы в котором находится user пользователя? 
    8 февраля 2019 г. 10:48