Adding Exchange Snapin to IronPython

From IronPython Cookbook

Powershell can host other applications. Exchange is one of the first environments to fully take advantage of this. Here is a simple example that adds the exchange environment with add_pssnapin so exchange becomes manageable from ironpython.

This code you need to add to powershell.py. It will add all available snapins. I marked with comments the section that has new code.



def init_runspace():

    '''
    '''

    global shell

    #####START CODE to add all available snapins####    
    for snapin in InvokeCommand('Get-PsSnapin',registered=True):
        InvokeCommand('Add-PsSnapin',name=snapin.name)
    cmds = {}
    for cmdlet in InvokeCommand('get-command'):
        cmds[translate(cmdlet.Name)] = ShellCommand(cmdlet.Name)
    #####END CODE to add all available snapins####

    #build up a dictionary of native PowerShell commands where 
    #each value consists of the PS command wrapped within 
    #the ShellCommand helper class

    cmds = {}
    for cmdlet in InvokeCommand('get-command'):
        cmds[translate(cmdlet.Name)] = ShellCommand(cmdlet.Name)
	#look for all aliases and for each of them that map directly
	#into a native PowerShell command, support them directly
	#from the dictionary

    for alias in InvokeCommand('get-alias'):
        cmdName = translate(alias.ReferencedCommand.Name)
        if cmdName in cmds:
            cmds[translate(alias.Name)] = cmds[cmdName]

    shell = Shell(cmds)
    ShellOutput.__dict__.update(cmds)


Then you can do something like this. You may want to create a new module called powershell2 instead of modifying the original.

import powershell2
print powershell2.shell.get_mailbox()

Back to Contents.

TOOLBOX
LANGUAGES