Código de ejemplo para instalar un elemento de menú contextual estático
En el ejemplo de código siguiente se usan dos scripts. El primer script (Frommenu.vbs) es el comando que se ejecuta cuando se selecciona el elemento de menú. El segundo script (Addmenu.vbs) instala el elemento de menú contextual del especificador de pantalla para ejecutar el script Frommenu.vbs. En este ejemplo se supone que la configuración regional 409 (inglés de EE. UU.) y extiende el menú contextual del objeto de usuario en complementos administrativos de Active Directory.
Para ejecutar el código de ejemplo
- Copie el código de Frommenu.vbs siguiente, abra el Bloc de notas, pegue el código en el Bloc de notas, guarde el archivo como C:\frommenu.vbs y cierre el Bloc de notas.
- Copie el código de Addmenu.vbs siguiente, abra el Bloc de notas, pegue el código en el Bloc de notas, guarde el archivo como C:\addmenu.vbs y cierre el Bloc de notas.
- Ejecute Addmenu.vbs.
- Inicie el complemento Usuarios y equipos de Active Directory.
FROMMENU.VBS
'Frommenu.vbs is the script run when the menu item is chosen.
''''''''''''''''''''
' Parse the arguments
' First arg is ADsPath of the selected object. Second is Class.
''''''''''''''''''''
On Error Resume Next
Set oArgs = WScript.Arguments
sText = "This script was run from a display specifier context menu." & vbCrLf & "Selected Item:"
If oArgs.Count > 1 Then
sText = sText & vbCrLf & " ADsPath: " & oArgs.item(0)
sText = sText & vbCrLf & " Class: " & oArgs.item(1)
Else
sText = sText & vbCrLf & "Arg Count: " & oArgs.Count
End If
show_items sText
Err.Number = 0
sBind = oArgs.item(0)
Set dsobj= GetObject(sBind)
If (Err.Number <> 0) Then
BailOnFailure Err.Number, "on GetObject method"
End If
objname = dsobj.Get("name")
If (Err.Number <> 0) Then
BailOnFailure Err.Number, "on Get method"
End If
sText = "Use ADsPath from first argument to bind and get RDN (name) property."
sText = sText & vbCrLf & "Name: " & objname
show_items sText
''''''''''''''''''''
' Display subroutines
''''''''''''''''''''
Sub show_items(strText)
MsgBox strText, vbInformation, "Script from Context Menu"
End Sub
Sub BailOnFailure(ErrNum, ErrText) strText = "Error 0x" & Hex(ErrNum) & " " & ErrText
MsgBox strText, vbInformation, "ADSI Error"
WScript.Quit
End Sub
ADDMENU.VBS
' Addmenu.vbs adds the menu item to run Frommenu.vbs
' from user object's context menu in the admin snap-ins.
On Error Resume Next
Set root= GetObject("LDAP://rootDSE")
If (Err.Number <> 0) Then
BailOnFailure Err.Number, "on GetObject method"
End If
sConfig = root.Get("configurationNamingContext")
'hardcoded for user class.
sClass = "user"
'hardcoded for US English
sLocale = "409"
sPath = "LDAP://cn=" & sClass & "-Display,cn=" & sLocale & ",cn=DisplaySpecifiers," & sConfig
show_items "Display Specifier: " & sPath
Set obj= GetObject(sPath)
If (Err.Number <> 0) Then
BailOnFailure Err.Number, "on GetObject method"
End If
'TODO--check if this is already there.
'Add the value for the context menu
sValue = "5,Run My Test Script,c:\frommenu.vbs"
vValue = Array(sValue)
obj.PutEx 3, "adminContextMenu", vValue
If (Err.Number <> 0) Then
BailOnFailure Err.Number, "on IADs::PutEx method"
End If
' Commit the change.
obj.SetInfo
If (Err.Number <> 0) Then
BailOnFailure Err.Number, "on IADs::SetInfo method"
End If
show_items "Success! Added value to adminContextMenu property of user-Display: " & sValue
''''''''''''''''''''
' Display subroutines
''''''''''''''''''''
Sub show_items(strText)
MsgBox strText, vbInformation, "Add admin context menu"
End Sub
Sub BailOnFailure(ErrNum, ErrText) strText = "Error 0x" & Hex(ErrNum) & " " & ErrText
MsgBox strText, vbInformation, "ADSI Error"
WScript.Quit
End Sub