home *** CD-ROM | disk | FTP | other *** search
/ ftp.ac-grenoble.fr / 2015.02.ftp.ac-grenoble.fr.tar / ftp.ac-grenoble.fr / assistance.logicielle / XP_ServicePack-3.iso / support / tools / support.cab / sidhist.vbs < prev    next >
Text File  |  2001-08-17  |  4KB  |  173 lines

  1.  
  2. '
  3. ' Example usage of ICloneSecurityPrincipal::AddSidHistory
  4. '
  5. ' Copyright (c) 1999 Microsoft Corporation
  6.  
  7.  
  8.  
  9. option explicit
  10. const SCRIPT_FILENAME    = "sidhist.vbs"
  11. const SCRIPT_SOURCE_NAME = "sidhist.vbt"
  12. const SCRIPT_DATE        = "Aug 17 2001"
  13. const SCRIPT_TIME        = "12:42:14"
  14. const ARG_COUNT          = 6
  15.  
  16. ' command line parameters
  17. Dim srcDC       ' source domain controller                     
  18. Dim srcDom      ' source domain                                
  19. Dim srcSam      ' source principal SAM name
  20. Dim dstDC       ' destination controller                       
  21. Dim dstDom      ' destination domain                           
  22. Dim dstSam      ' destination principal SAM name
  23.  
  24. If wscript.arguments.count <> ARG_COUNT Then
  25.    PrintUsage
  26. End If
  27.  
  28. Dim args()
  29. ReDim args(0)
  30. args(0) = ""
  31.  
  32. Dim i
  33. For i = 0 to wscript.arguments.count - 1
  34.     ReDim Preserve args(i)
  35.     args(i) = wscript.arguments.item(i)
  36. Next
  37.  
  38. srcDC   = GetArgValue("srcdc",   args)
  39. srcDom  = GetArgValue("srcdom",  args)
  40. srcSam  = GetArgValue("srcsam",  args)
  41. dstDC   = GetArgValue("dstdc",   args)
  42. dstDom  = GetArgValue("dstdom",  args)
  43. dstSam  = GetArgValue("dstsam",  args)
  44.  
  45. If CheckForBadArgs(args) Then
  46.     wscript.echo "Unknown command-line arguments specified"
  47.     PrintUsage
  48. End If
  49.  
  50.  
  51. ' Create the COM object implementing ICloneSecurity Principal
  52.  
  53. Dim clonepr
  54. Set clonepr = CreateObject("DSUtils.ClonePrincipal")
  55.  
  56. On Error Resume Next
  57.  
  58. ' Connect to the source and destination domain controllers
  59.  
  60. clonepr.Connect srcDC, srcDom, dstDC, dstDom
  61. If Err.Number then
  62.     DumpErr
  63.     wscript.quit(0)
  64. Else
  65.     wscript.echo "Connected"
  66. End If
  67.  
  68. ' Add the SID of the source principal to the sid history of the destination
  69. ' principal.
  70.  
  71. clonepr.AddSidHistory srcSam, dstSam, 0
  72. If Err.Number then
  73.     DumpErr
  74.     wscript.quit(0)
  75. Else
  76.     wscript.echo "Success"
  77. End If
  78.  
  79. wscript.quit(0)
  80.  
  81.  
  82.  
  83. Function GetArgValue(argName, args())
  84.     Dim a
  85.     Dim v
  86.     Dim iLenArgName
  87.     Dim x
  88.     Dim iArgCount
  89.     Dim fullArgName
  90.  
  91.     fullArgName = "/" & argName & ":"
  92.     iArgCount = Ubound(args)
  93.  
  94.     ' Get the length of the argname we are looking for
  95.     iLenArgName = Len(fullArgName)
  96.     GetArgValue = "" ' default to nothing
  97.     
  98.     For x = 0 To iArgCount 
  99.         If Len(args(x)) >= iLenArgName Then
  100.  
  101.             a = Mid(args(x), 1, iLenArgName)
  102.             If UCase(a) = UCase(fullArgName) Then
  103.  
  104.                 ' erase it so we can look for unknown args later
  105.                 v = args(x)
  106.                 args(x) = ""
  107.  
  108.                 If Len(v) > iLenArgName Then
  109.                     GetArgValue = Mid(v, iLenArgName + 1)
  110.                     Exit Function
  111.                 Else 
  112.                     GetArgValue = ""
  113.                     Exit Function
  114.                 End If
  115.             End If
  116.         End If
  117.     Next 
  118. End Function
  119.  
  120.  
  121.  
  122. Function CheckForBadArgs(args())
  123.     For i = 0 to UBound(args) 
  124.         If Len(args(i)) > 0 Then
  125.             CheckForBadArgs = 1
  126.             Exit Function
  127.         End If
  128.     Next
  129.  
  130.     CheckForBadArgs = 0
  131. End Function
  132.                 
  133.  
  134.  
  135. Sub PrintUsage
  136.    Echo "Usage: cscript " & SCRIPT_FILENAME & " /srcdc:<dcname> /srcdom:<domain>"
  137.    Echo "/srcsam:<name> /dstdc:<dcname> /dstdom:<domain> /dstsam:<name>"
  138.    Echo ""
  139.    Echo "Parameters:"
  140.    Echo " /srcdc   - source domain controller NetBIOS computer name (without leading \\)"
  141.    Echo ""
  142.    Echo " /srcdom  - source domain NetBIOS name"
  143.    Echo ""
  144.    Echo " /srcsam  - source principal SAM name"
  145.    Echo ""
  146.    Echo " /dstdc   - destination domain controller NetBIOS computer name (without "
  147.    Echo "            leading \\)"
  148.    Echo "            This script must be run on the machine indicated here."
  149.    Echo ""
  150.    Echo " /dstdom  - destination domain DNS name"
  151.    Echo ""
  152.    Echo " /dstsam  - destination principal SAM name"
  153.    Echo ""
  154.    Echo SCRIPT_DATE & " " & SCRIPT_TIME
  155.    wscript.quit(0)
  156. End Sub
  157.  
  158.  
  159.  
  160. Sub DumpErr
  161.     wscript.echo "Error 0x" & CStr(Hex(Err.Number)) & " occurred."
  162.     wscript.echo "Error Description: " & Err.Description
  163.     wscript.echo "Error HelpContext: " & Err.HelpContext
  164.     wscript.echo "Error HelpFile   : " & Err.HelpFile
  165.     wscript.echo "Error Source     : " & Err.Source
  166.     Err.Clear
  167. End Sub
  168.  
  169.  
  170. sub Echo(byref message)
  171.    wscript.echo message
  172. end sub
  173.