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

Ответы

  • да еклмн, заимелчесснслово

    Set objSysInfo =CreateObject("ADSystemInfo")
    Set objNet = WScript.CreateObject("WScript.Network") 
    Set FSO = CreateObject("scripting.filesystemobject")
    Set objUser =GetObject("LDAP://"& objSysInfo.UserName)
    Set oTranslate = CreateObject("NameTranslate")
    
    sUserName = objUser.displayName
    sSAMName = objUser.sAMAccountName   
    sDomainName = objNet.UserDomain
    
    oTranslate.Init 3,""
    oTranslate.Set 3, sDomainName & "\" & sSAMName
    sDN = oTranslate.Get(1)
    temp1=Split(sDN,"=",-1,1)
    'wscript.echo temp1(2)
    sOU=Split(temp1(2),",",-1,1)
    wscript.echo sOU(0)
    
    folderToCheckFor = "\\file-pc\full_share\USERS\" & sOU(0)
    If (FSO.FolderExists(folderToCheckFor)) = False Then 
    FSO.CreateFolder(folderToCheckFor) 
    End If 
    
    folderToCheckFor2 = folderToCheckFor & "\" & sUserName 
    If (FSO.FolderExists(folderToCheckFor2)) = False Then 
    FSO.CreateFolder(folderToCheckFor2) 
    Set WshShell = WScript.CreateObject("WScript.Shell") 
    Call WshShell.Run("CACLS " & Chr(34) & folderToCheckFor2 & Chr(34) & " /T /E /C /G " & sDomainName & "\" & sSAMName & ":F",2,True) 
    Call WshShell.Run("CACLS " & Chr(34) & folderToCheckFor2 & Chr(34) & " /T /E /C /G " & sDomainName & "\Domain Admins:F",2,True) 
    Call WshShell.Run("CACLS " & Chr(34) & folderToCheckFor2 & Chr(34) & " /T /E /C /G " & sDomainName & "\GLOBAL_SUPERVISORS:F",2,True) 
    Set WshShell = nothing 
    End If 
    
    Set FSO = nothing 
    Set objNet = nothing

    11 февраля 2019 г. 14:13

Все ответы

  • $tmpPath = 'c:\test'
    get-aduser -filter * -properties distinguishedname | foreach {
       $folders = $_.distinguishedname -replace '^CN=[^,]+,' -replace ',DC=.+$' -replace 'OU=' -split ','
       foreach ($i in -1..-$(($folders | measure-object).count -1)){
          if (! (test-path "$tmpPath\$($folders[$i])")){
             new-item -itemtype directory "$tmpPath\$($folders[$i])"
          }
          $tmpPath = "$tmpPath\$($folders[$i])"
       }
    }

     что-то типа такого (написано на телефоне, в связи с чем могут быть опечатки, которые можно легко отловить в ошибках)

    к слову сказать тз крайне расплывчато: не указано где создать, нужнали вся структура каталогов или только последний


    The opinion expressed by me is not an official position of Microsoft

    11 февраля 2019 г. 7:05
    Модератор
  • это powershell скрипт

    мне нужно vbs скрипт если можно могу дать путь к папке где должна создатся 

    \\file\full_share\

    11 февраля 2019 г. 7:20
  • вы его будете запускать на 2003 сервере и у администратора нет пк даже с windows 7, зачем именно vbs?

    путь вы сами можете поменять в первой строке)


    The opinion expressed by me is not an official position of Microsoft



    11 февраля 2019 г. 7:24
    Модератор
  • у меня сервер 2012 р2 и windows 7

    у них я запущу скрипт

    11 февраля 2019 г. 7:25
  • у меня сервер 2012 р2 и windows 7

    у них я запущу скрипт

    тогда зачем vbs?

    The opinion expressed by me is not an official position of Microsoft

    11 февраля 2019 г. 7:26
    Модератор
  • у меня есть такой скрипт хочу к нему дополнить чтобы создал папку по OU в котором находится user

    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-pc\full_share\USERS\" & 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

    11 февраля 2019 г. 7:32
  • у меня есть такой скрипт хочу к нему дополнить чтобы создал папку по OU в котором находится user

    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-pc\full_share\USERS\" & 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

    ок, вы в этот код можете добавить пару строк и он будет делать то что вам нужно, только не понятно что же конкретно вам нужно (я не вижу куда вы хотите добавить упомянутую логику, как и не понимаю сути задачи)

    The opinion expressed by me is not an official position of Microsoft

    11 февраля 2019 г. 12:14
    Модератор
  • Например мне нужно создать папку пользователя чтобы он создавался в папке с названием организационной единицы в котором находится юзер, типо в таком плане чтобы указать путь 

    \\file-pc\full_share\USERS\%OrganizationalUnit%\


    11 февраля 2019 г. 12:28
  • Set objSysInfo =CreateObject("ADSystemInfo")
    Set objNet = WScript.CreateObject("WScript.Network") 
    Set FSO = CreateObject("scripting.filesystemobject")
    Set objUser =GetObject("LDAP://"& objSysInfo.UserName)
    Set oTranslate = CreateObject("NameTranslate")
    
    sUserName = objUser.displayName
    sSAMName = objUser.sAMAccountName   
    sDomainName = objNet.UserDomain
    
    oTranslate.Init 3,""
    oTranslate.Set 3, sDomainName & "\" & sSAMName
    sDN = oTranslate.Get(1)
    temp1=Split(sDN,"=",-1,1)
    'wscript.echo temp1(2)
    sOU=Split(temp1(2),",",-1,1)
    wscript.echo sOU(0)
    
    folderToCheckFor = "\\file-pc\full_share\USERS\" & sOU(0)
    If (FSO.FolderExists(folderToCheckFor)) = False Then 
    FSO.CreateFolder(folderToCheckFor) 
    End If 
    
    folderToCheckFor = "\\file-pc\full_share\USERS\" & 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
    UPD. поправил

    • Изменено Svolotch 11 февраля 2019 г. 14:01
    11 февраля 2019 г. 13:12
  • такая ошибка

    11 февраля 2019 г. 13:30
  • название оу какое? 

    если вот так вот запустить, оушку верно выдает?

    Set objSysInfo =CreateObject("ADSystemInfo")
    Set objNet = WScript.CreateObject("WScript.Network") 
    Set FSO = CreateObject("scripting.filesystemobject")
    Set objUser =GetObject("LDAP://"& objSysInfo.UserName)
    Set oTranslate = CreateObject("NameTranslate")
    
    sUserName = objUser.displayName
    sSAMName = objUser.sAMAccountName   
    sDomainName = objNet.UserDomain
    
    oTranslate.Init 3,""
    oTranslate.Set 3, sDomainName & "\" & sSAMName
    sDN = oTranslate.Get(1)
    temp1=Split(sDN,"=",-1,1)
    'wscript.echo temp1(2)
    sOU=Split(temp1(2),",",-1,1)
    wscript.echo sOU(0)
    

    11 февраля 2019 г. 13:47
  • название к примеру поставил MY users
    11 февраля 2019 г. 13:52
  • блин, все верно... там же массив

    в 19й строке поправьте:

    folderToCheckFor = "\\file-pc\full_share\USERS\" & sOU(0)
    11 февраля 2019 г. 13:54
  • до этого все верно никаких ошибок
    11 февраля 2019 г. 13:54
  • да все норм, это я опечатался, забыл указать элемент массива.

    проверяйте дальше

    11 февраля 2019 г. 13:59
  • отлично создал две папки 

    у одного название по OU

    а другое по юзерю

    такой вопрос 

    а можно сделать чтобы папку юзера создавала внутри папки?

    \\file-pc\full_share\USERS\sOU(0)\

    такого типа

    11 февраля 2019 г. 14:00
  • да еклмн, заимелчесснслово

    Set objSysInfo =CreateObject("ADSystemInfo")
    Set objNet = WScript.CreateObject("WScript.Network") 
    Set FSO = CreateObject("scripting.filesystemobject")
    Set objUser =GetObject("LDAP://"& objSysInfo.UserName)
    Set oTranslate = CreateObject("NameTranslate")
    
    sUserName = objUser.displayName
    sSAMName = objUser.sAMAccountName   
    sDomainName = objNet.UserDomain
    
    oTranslate.Init 3,""
    oTranslate.Set 3, sDomainName & "\" & sSAMName
    sDN = oTranslate.Get(1)
    temp1=Split(sDN,"=",-1,1)
    'wscript.echo temp1(2)
    sOU=Split(temp1(2),",",-1,1)
    wscript.echo sOU(0)
    
    folderToCheckFor = "\\file-pc\full_share\USERS\" & sOU(0)
    If (FSO.FolderExists(folderToCheckFor)) = False Then 
    FSO.CreateFolder(folderToCheckFor) 
    End If 
    
    folderToCheckFor2 = folderToCheckFor & "\" & sUserName 
    If (FSO.FolderExists(folderToCheckFor2)) = False Then 
    FSO.CreateFolder(folderToCheckFor2) 
    Set WshShell = WScript.CreateObject("WScript.Shell") 
    Call WshShell.Run("CACLS " & Chr(34) & folderToCheckFor2 & Chr(34) & " /T /E /C /G " & sDomainName & "\" & sSAMName & ":F",2,True) 
    Call WshShell.Run("CACLS " & Chr(34) & folderToCheckFor2 & Chr(34) & " /T /E /C /G " & sDomainName & "\Domain Admins:F",2,True) 
    Call WshShell.Run("CACLS " & Chr(34) & folderToCheckFor2 & Chr(34) & " /T /E /C /G " & sDomainName & "\GLOBAL_SUPERVISORS:F",2,True) 
    Set WshShell = nothing 
    End If 
    
    Set FSO = nothing 
    Set objNet = nothing

    11 февраля 2019 г. 14:13
  • знаю спасибо огромное)
    12 февраля 2019 г. 5:15
  • такой еще вопрос а можно сделать так чтобы это окошко не появлялся?

    12 февраля 2019 г. 5:49
  • удалите эту строку

    wscript.echo sOU(0)


    The opinion expressed by me is not an official position of Microsoft

    12 февраля 2019 г. 6:35
    Модератор
  • спасибо большое
    12 февраля 2019 г. 6:59