• Products
    • View all products
    • Free trials
  • Solutions
    • All Solutions
    • All Integrations
  • Resources
    • All Resources
    • Learning Hub
  • Trials
  • Support
    • Support Home
    • By Product
      • All Products
      • Active Roles
      • Authentication Services
      • Cloud Access Manager
      • Defender
      • Identity Manager
      • Password Manager
      • Safeguard
      • Starling Identity Analytics & Risk Intelligence
      • Starling Two-Factor Authentication
      • TPAM Appliance
    • Contact Support
      • Overview
      • Customer Service
      • Licensing Assistance
      • Renewal Assistance
      • Technical Support
    • Download Software
    • Knowledge Base
    • My Account
      • My Products
      • My Service Requests
      • My Licenses
      • My Groups
      • My Profile
    • Policies & Procedures
    • Professional Services
    • Technical Documentation
    • One Identity University
    • User Forums
    • Video Tutorials
  • Partners
    • Overview
    • Partner Circle Log In
    • Become a Partner
    • Find a Partner
    • Partner Community
  • Communities
    • Home
    • Blogs
      • Blogs A to Z
      • One Identity Community
      • AD Account Lifecycle Management
      • Cloud
      • Identity Governance & Administration
      • Privileged Access Management
      • syslog-ng Community
    • Forums
      • All Product Forums
      • Active Roles
      • Identity Manager
      • Password Manager
      • Safeguard
      • Unix Access Management
    • Social Networks
      • Facebook
      • LinkedIn
      • Twitter
      • YouTube
One Identity Community
One Identity Community
  • Site
  • User
  • Site
  • Search
  • User
Active Roles Community
Active Roles Community
Wiki Execute an Exchange cmdlet in script policy
  • Forum
  • Ideas
  • Wiki
  • More
  • Cancel
  • New
  • -Active Roles Script Center
    • +Active Roles Script Policy Best Practices
    • Active Roles SDK
    • +C#
    • +JavaScript
    • +PowerShell
    • -VBScript
      • VBScript Library source code
      • -VBScript samples
        • A Managed Unit with users which have not logged on for last 90 days
        • Adjust the case of usernames to title case (first letter of each part of the name)
        • Advanced group creation/provision
        • Advanced shared folder creation
        • Bulk policy incompliance fixing
        • Check unique value of an attribute
        • +Computer management
        • -Exchange management
          • Change default SMTP address
          • Custom script-based mailbox store selection policy
          • Execute an Exchange cmdlet in script policy
          • Force Mailbox-Creation Policy upon User creation outside of Active Roles
          • How to prevent a mailbox creation on the New User Wizard
          • How to remove X400 address
          • Select Exchange mailbox store on user copy
        • Function that converts regular date into integer8 format
        • Get effective policy info list
        • +Group management
        • How to find a request source in script policy
        • How to send emails based on scripts policy parameters and Virtual Attribute values
        • +Permissions Management
        • Policy incompliance reporting & fixing for specified policy
        • Populate values from a SQL database to an AD Attribute
        • Prevent copying an attribute on user copy
        • Prohibite a permission propagation to AD
        • Prohibite an AD native security editing
        • Read large integer date attributes and display them in date and time readable format
        • Read XML Node text or attribute value
        • Read XML Node with Children into DictionaryObject
        • Standalone script that requests built-in password generation policy
        • +User management
        • Validate moving operations
        • +VBScript: Approval

Execute an Exchange cmdlet in script policy

DESCRIPTION

Execute an Exchange cmdlet with parameters passed by virtual attributes in script policy. The .Net Framework, PowerShell and Exchange Management Tools are required to be installed on the computer where ActiveRoles Server Administrative Service is running.

Please, replace the edsvaArgument1/edsvaArgument2 names with the name of your virtual attributes, change "Some-ExchangeCommand" to the real Exchange cmdlet name (for example, "Enable-Mailbox"), and change "-Argument1"/"-Argument2" to real cmdlet parameter names.

CAUTION! Exchange cmdlet execution is marked as non-interactive, but it still can ask user input anyway. To avoid this, please select the cmdlet and its arguments with care.

Note This code may use functions from the Active Roles Script Policy Best Practices. Please, follow the link to obtain instructions and code for those functions.

SCRIPT

'*********************************************************************************

' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,

' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED

' WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.

'

' IF YOU WANT THIS FUNCTIONALITY TO BE CONDITIONALLY SUPPORTED,

' PLEASE CONTACT ONE IDENTITY PROFESSIONAL SERVICES.

'*********************************************************************************

Option Explicit

'***********************************************************************************

'** CUSTOMIZABLE SETTINGS

'***********************************************************************************

Const strPowerShellFileName = "C:\WINDOWS\system32\WindowsPowerShell\v1.0\PowerShell.exe"

Const strExchangeSnapinFileName = "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1"

'***********************************************************************************

'** SUBROUTINES

'***********************************************************************************

Function GetParameter(ByVal strName, ByRef Request)

On Error Resume Next

GetParameter = Request.Parameter(strName)

On Error GoTo 0

End Function ' GetParameter

'***********************************************************************************

Function ExecutePowerShellCmdlet(ByVal strShellCommand)

Dim objShell, strFullShellCommand, numReturnCode

'--- needed objects

Set objShell = CreateObject("WScript.Shell")

'--- construct a full command for shell

strFullShellCommand = """" & strPowerShellFileName & """" & _

" -PSConsoleFile """ & strExchangeSnapinFileName & """" & _

" -NoLogo -NonInteractive" & _

" -Command """ & strShellCommand & """"

'--- execute a command and get a return code

numReturnCode = objShell.Run(strFullShellCommand, 0, True)

'--- numReturnCode = 0 means that the command was executed successfully

'--- otherwise, it was failed

ExecutePowerShellCmdlet = numReturnCode

End Function

'***********************************************************************************

'** EVENT HANDLERS

'***********************************************************************************

Sub onPostCreate(Request)

'--- handle user object only ---

If (IsObjectClassRequested("user", Request)) Then Exit Sub

Dim strArgument1, strArgument2

'--- get values from virtual attributes ---

strArgument1 = GetAttribute("edsvaArgument1", Request)

strArgument2 = GetAttribute("edsvaArgument2", Request)

Dim objOctetString

Dim strObjectGUID, strDomainControllerFQDN

Dim strShellCommand, numReturnCode

'--- helping objects ---

Set objOctetString = CreateObject("AelitaEDM.EDMOctetString")

'--- get object GUID as string value ---

Call objOctetString.Set(DirObj.GUID)

strObjectGUID = objOctetString.GetGuidString()

'--- get domain controller fully-qualified domain name ---

strDomainControllerFQDN = GetParameter("LdapServer", Request)

'--- Excahnge 2007 commandlet name ---

strShellCommand = "Some-ExchangeCommand"

'--- add the first argument ---

If (Not IsEmpty(strArgument1)) Then

strShellCommand = strShellCommand & " -Argument1 " & strArgument1

End If

'--- add the second argument ---

If (Not IsEmpty(strArgument2)) Then

strShellCommand = strShellCommand & " -Argument2 " & strArgument2

End If

'--- add the rest arguments ---

strShellCommand = strShellCommand & _

" -Identity " & strObjectGUID & _

" -DomainController " & strDomainControllerFQDN

'--- execute a command and get a return code ---

numReturnCode = ExecutePowerShellCmdlet(strShellCommand)

'--- numReturnCode = 0 means that the command was executed successfully ---

'--- otherwise, it was failed ---

End Sub

'***** END OF CODE ***************************************************************

  • Script Center
  • Script Center: VBScript
  • Share
  • History
  • More
  • Cancel
Related
Recommended
  • Company
    • About Us
    • Buy
    • Careers
    • Contact Us
    • News
  • Resources
    • Blogs
    • Customer Stories
    • Documents
    • Events
    • Videos
  • Support
    • Professional Services
    • Renew Support
    • Technical Support
    • One Identity University
    • Support Service
  • Social Networks
    • Facebook
    • Instagram
    • LinkedIn
    • Twitter
    • YouTube
  • © 2025 One Identity LLC. ALL RIGHTS RESERVED.
  • Legal
  • Terms of Use
  • Privacy
  • Community Feedback & Support
  • Cookie Preference Center