PowerShell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ SharePoint рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде VBS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ AD рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдСрдбрд┐рдЯ рдХрд░реЗрдВ

рд╢реБрдн рджреЛрдкрд╣рд░ рдпреВрдПрдлрдУ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ

рдореИрдВ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреИрд╕реЗ рдореИрдВрдиреЗ AD рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХреА рдФрд░ рдлрд┐рд░ рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП SharePoint рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреЛрд╕реНрдЯ рдХреА рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдордп рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореИрдВ рдмрд╕ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдБрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдм рдерд╛ ...

рдХрд╛рд░реНрдп AD рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЙрдирдХреЗ рдФрд░ рдЙрдирдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдХреНрдпрд╛ рдерд╛: VBS рдХреЛ LDAP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдХрдИ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ), рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рдЬрдЧрд╣ рдПрдХрддреНрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдлрд┐рд░ PowerShell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдПрдХ рддреИрдпрд╛рд░ SharePoint рд╕рд╛рдЗрдЯ рдкрд░ рдЬрдЧрд╣ рд▓реЗрддреЗ рд╣реИрдВ ред

On Error Resume Next Dim oQuery Dim objConnection Dim objCommand Dim objRecordSet Dim strMember Dim strAC Dim arrMember '       logfile = "users-lvs.txt" Set objFSO = CreateObject("Scripting.FileSystemObject") oQuery = "<LDAP://dc=my,dc=site>;" & _ "(objectCategory=user)" & _ ";distinguishedName,name,sAMAccountname,mail,memberOf,userAccountControl,description;subtree" '            Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Open "Provider=ADsDSOObject;" objCommand.ActiveConnection = objConnection objCommand.CommandText = oQuery Set objRecordSet = objCommand.Execute '    - ,   -  if objFSO.FileExists(logfile) then Set objFile = objFSO.OpenTextFile(logfile, 2) objFile.Write "" else Set objFile = objFSO.CreateTextFile(logfile) objFile.Close Set objFile = objFSO.OpenTextFile(logfile, 2) objFile.Write "" end if objFile.Close '  ,     While Not objRecordSet.EOF strMember = objRecordSet.Fields("memberOf") strStr = "" For i = 0 To UBound(strMember) '        liluka = InStr(2, strMember(i), ",", vbTextCompare) '       strStr = strStr & Right(Left(strMember(i), liluka - 1), liluka - 4) & ", " Next arrOpis = objRecordSet.Fields("description") strOpis = "" For i = 0 To UBound(arrOpis) strOpis = strOpis & arrOpis(i) & ", " Next '      Select Case objRecordSet.Fields("userAccountControl") Case 512 strAC = "" Case 514 strAC = "" Case 66048 strAC = "" Case 66050 strAC = "" End Select '      Set objFile = objFSO.OpenTextFile(logfile, 8) objFile.WriteLine objRecordSet.Fields("sAMAccountname") & ";1" & _ objRecordSet.Fields("name") & ";2" & _ objRecordSet.Fields("mail") & ";3" & _ strStr & ";4" & strAC & ";5" & strOpis & ";6" objFile.Close objRecordSet.MoveNext Wend objConnection.Close 


рдХреЛрдб рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд▓рд╛рдЗрди рдХреЗ рдЕрдВрдд рдореЗрдВ "6 рд▓реИрди" рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рдХрд╣рд╛ рдерд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рд╕реЗрдЧрдореЗрдВрдЯ рд╣реИрдВ рдФрд░ рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рд▓реИрди рд╣реИред рд╕рд╛рдЗрди рдСрдл рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдФрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордирд╛ рдХрд┐рдП рдЧрдП 4 рдорд╛рди рд▓реЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЬреАрд╡рди рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд┐рдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЪрд░ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ...
PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЬрд╛рдирдХрд╛рд░реА рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИ, рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП рдПрдХ рдирдВрдмрд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рдкреЗрд╢реЗрд╡рд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЛрдб рдХрд╛ рдПрдХ рдкреНрд░реЗрдореА рдЬреЛ рдореБрдЭреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо / рд╡рд┐рд╢реНрд▓реЗрд╖рдг / рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреБрдж PowerShell рдХреЛрдб:
 #          ,  write-host open Sharepoint from USERS # sharepoint $env:SPpath = "${env:CommonProgramFiles}\Microsoft Shared\web server extensions\12\" [System.Reflection.Assembly]::LoadFrom("$env:SPPath\ISAPI\Microsoft.SharePoint.dll") write-host open web #  web $nsite="http://my_site/sites/MonitorUser" $SpSite = New-Object -TypeName "Microsoft.SharePoint.SPSite" -ArgumentList $nsite; $spweb=$spsite.OpenWeb(); write-host open Sharepoint list #   $nlist="http://my_site/sites/MonitorUser/Lists/List5/AllItems.aspx" $splist=$spweb.getlist($nlist); #   write-host clearing list... $iCnt = $splist.Items.Count; #$icnt; for ($jj=1; $jj -le $iCnt; $jj++){ $splist.Items.Delete(0); } write-host clearing list Done #      ,     write-host Processing log files... foreach ($file in $(get-childitem 'D:\scripts\work\' -include users*.txt -recurse)) { $hostout = $file.FullName + "..." Write-Host $hostout $fl = get-content $file.FullName; # $fl; for ($i=1; $i -lt $fl.Count; $i++) { $st1 =$fl[$i]; #       $ind1 = $st1.IndexOf(";1") $ind2 = $st1.IndexOf(";2") $ind3 = $st1.IndexOf(";3") $ind4 = $st1.IndexOf(";4") $ind5 = $st1.IndexOf(";5") $ind6 = $st1.IndexOf(";6") $stLogin = $st1.substring(0,$ind1) $stUserName = $st1.substring($ind1+2,$ind2-$ind1-2) $stMail = $st1.substring($ind2+2,$ind3-$ind2-2) $ind7 = $ind4-$ind3 if ($ind7 -eq 2) { $stGroup = " " } else { $stGroup = $st1.substring($ind3+2,$ind4-$ind3-4) } $ind7 = $ind6-$ind5 if ($ind7 -eq 2) { $stOpis = "" } else { $stOpis = $st1.substring($ind5+2,$ind6-$ind5-4) } $stBlock = $st1.substring($ind4+2,$ind5-$ind4-2) $stSeg = $st1.substring($ind6+2,3) #         $NewItem = $SpList.Items.Add(); $NewItem[""] = $stLogin; $NewItem[" "] = $stUserName; $NewItem["e-mail"] = $stMail; $NewItem[""] = $stGroup; $NewItem[""] = $stBlock; $NewItem[""] = $stSeg; $NewItem[""] = $stOpis; $NewItem.Update(); } } write-host Processing log files DONE $spweb.Dispose(); $spsite.Dispose(); write-host Program END 


рдЕрдм рд╡реЗ рдПрдХ рд╕реНрдерд╛рди рдкрд░ txt рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ
 cscript users-lvs.vbs %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe "& 'D:\scripts\work\users.ps1'" %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe "& 'D:\scripts \work\pk.ps1'" 

рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рд▓реИрди рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рдЪрд▓рддреА рд╣реИ, рдЙрд╕реА рд╕рдордп, рд╣рдо рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛, рдХрд╛рдордХрд╛рдЬреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддреА рд╣реИ (рдУрдПрд╕, рд╕рдВрд╕реНрдХрд░рдг, рдкреИрдХ, рд╡рд┐рд╡рд░рдг, рдЬрдм рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдЙрдкрдпреЛрдХреНрддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред
рд╣рд░ рдЪреАрдЬ рдореЗрдВ рд╕рдмрд╕реЗ рд▓рдВрдмреА рдЪреАрдЬ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдХ рдкреГрд╖реНрда рдХреЛ рд╕реВрдЪрдирд╛ (рд▓рдЧрднрдЧ 2-3 рдорд┐рдирдЯ) рдХреЗ рд╕рд╛рде рд╕рд╛рдлрд╝ рдХрд░ рд░рд╣реА рд╣реИред рдпрджрд┐ рдкреГрд╖реНрда рдЦрд╛рд▓реА рд╣реИрдВ, рддреЛ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ 30 рд╕реЗрдХрдВрдб, 700-800 рд╕реЗ рдЕрдзрд┐рдХ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рд▓рдЧрддреЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, LDAP рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рдХреА рд╡рд░реНрдХрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рджрд┐рдЦреЗ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХрдм рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рднреА рдХрд┐ рдЙрд╕рдиреЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдкрд╛рд╕рд╡рд░реНрдб рдХрдм рдмрджрд▓рд╛ рдерд╛ред WMI рдореЗрдВ "рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ \ LDAP" рд╣реИ рдФрд░ рд╡рд╣рд╛рдБ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реА рд░реЛрдЪрдХ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкреБрдирд╢реНрдЪ рдореИрдВрдиреЗ рдЬрд▓реНрджреА рд╕реЗ рдЕрдкрдирд╛ рд╣рд╛рде рдЗрд╕рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛, рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдЖрд▓реЛрдЪрдирд╛ рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░рдирд╛ рд╣реИ, рдпрд╣ рд╕рд▓рд╛рд╣ рджреЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдкрд░ рдХрд┐рд╕ рдХреНрд╖рдг рдФрд░ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдмрд╣рд╕ рдХрд░рддреЗ рд╣реБрдП ...

Source: https://habr.com/ru/post/In158183/


All Articles