It takes the account created by OIM and passes 2 fields 2 my script and my script enables the mailbox, sets notes and such, then creates an O drive for the user. You might not need this exact functionality but hopefully if you need any of these things you can use my script to help you. 
 ##################################################################################################### NAME: OIMScript.ps1# DATE: 1/5/2011# AUTHOR: Robert Martin## COMMENT: Gets parameters from OIM call and then enables mailbox, updates AD information# and creates network share.## The script calls Exchange and AD commandline tools to gather and set information.## Run the script interactively, or as a scheduled task.# .\OIMScript.ps1 UserPrinicalName Location# example .\OIMScript.ps1 otest@location1.local Location1## The script was tested with Powershell v2 and Exchange 2007## VERSION HISTORY:# 1.0: Created and tested script#################################################################################################### Get the information needed to run the script from the command linePARAM ($Argument1,$Argument2)function Set-WindowsInfomation ($UserPrincipalName, $Location){# Load the Exchange Management ToolsAdd-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin# Load AD moduleImport-Module ActiveDirectory#.Synopsis#  Takes parameters from OIM and enables mailbox in Windows#.Description#  Gets parameters from OIM call and then enables mailbox, updates AD information and creates network share.    # Mailbox Server Cluster    $cluster = ""    # Custom Attribute used for Everyone List    $attribute = ""    # The Domain Controller to run the commands against    $server = ""    # What AD Group do they get added to for Kix Scripts    $Group = ""    # What server is there O Drive stored    $networkserver = ""    # What drive on that server does the O drive get created    $networkdrive = ""    # What folder does the O drive get created in - Typically (Users)    $networkfolder = ""    # Windows 2000 Domain Name ex. LOCATION1    $w2k = ""    # Fully Qualified Domain Name ex. location1.local    $domainname = ""    # Gets date script is ran for notes    $Date = date    # This is where we determine what location the user is in and then set variables based on that    switch -wildcard ($Location)      {        "LOCATION1"        {        $cluster = "LOC1MBCluster"        # Add Location1 AD directory        New-PSDrive -Name LOC1DOMAIN -PSProvider ActiveDirectory -root 'DC=location1,DC=local' -server DC1.location1.local        $server = "DC1"        $Group = "Location1 users"        $attribute = "Location 1"        $networkserver = "FILESERVER1"        $networkdrive = "D"        $networkfolder = "Users"        $w2k = "LOCATION1"        $domainname = "location1.local"        ; break        }        "LOCATION2"        {        $cluster = "LOC2MBCluster"        # Add Location2 AD directory        New-PSDrive -Name LOC2DOMAIN -PSProvider ActiveDirectory -root 'DC=location2,DC=local' -server DC2.location2.local        $server = "DC2"        $Group = "Location2 users"        $attribute = "Location 2"        $networkserver = "FILESERVER2"        $networkdrive = "D"        $networkfolder = "Users"        $w2k = "LOCATION2"        $domainname = "location2.local"        ; break        }        # This is where we setup the Field Users        # Field users do not get O drive so we set flag field=On        # Field users also get Remote in Custom Attribute 2 so we set that here        "FIELDLOC1*"        {        $cluster = "LOC1MBCluster"        # Add Location1 AD directory        New-PSDrive -Name LOC1DOMAIN -PSProvider ActiveDirectory -root 'DC=location1,DC=local' -server DC1.location1.local        $server = "DC1"        $Group = "Location1 users"        $attribute = "Location 1"        $attribute2 = "Remote"        $networkserver = "FILESERVER1"        $networkdrive = "D"        $networkfolder = "Users"        $w2k = "LOCATION1"        $domainname = "location1.local"        $field = "On"        ; break        }        # If the call does not have location we default to LOCATION1        Default        {        $cluster = "LOC1MBCluster"        # Add Location1 AD directory        New-PSDrive -Name LOC1DOMAIN -PSProvider ActiveDirectory -root 'DC=location1,DC=local' -server DC1.location1.local        $server = "DC1"        $Group = "Location1 users"        $attribute = "Location 1"        $networkserver = "FILESERVER1"        $networkdrive = "D"        $networkfolder = "Users"        $w2k = "LOCATION1"        $domainname = "location1.local"        }        }    # This is where we determine what mailbox store to create the mailbox in    $LeastBusyDB = (Get-Mailbox -Server $cluster -Resultsize Unlimited | ?{$_.database -notmatch 'RSG'} | Group-Object -Property:Database | Select-Object Name,Count | Sort-Object count | select -first 1 -expand name)   ##############################################   ### STEP 1: Enable Exchange Account for user   Enable-Mailbox -Identity $UserPrincipalName -Database $LeastBusyDB -ManagedFolderMailboxPolicy CleanDeletedItems60Days -ManagedFolderMailboxPolicyAllowed   # Pause for 30 seconds before we move on   Start-Sleep -s 30   ##############################################   ### STEP 2: Update Exchange Information with custom attributes   Set-Mailbox -Identity $UserPrincipalName -CustomAttribute1 $attribute -CustomAttribute2 $attribute2   # Pause for 20 seconds before we move on   Start-Sleep -s 20   ##############################################   ### STEP 3: Update User Information   Set-User -Identity $UserPrincipalName -Notes "Account created on $Date by OIM" -Company "Your Corporate Name"   # Get Alias for use in later calls   $alias = Get-Mailbox $UserPrincipalName | Select Alias   ##############################################   ### STEP 4: Add user to group for Kixscript   if ($Group -ne "")        {            Add-ADGroupMember $Group $alias.alias -Server $server -Confirm:$false        }   ##############################################   ### Check to see if they are field user, field users do not get an O drive   if($field -ne "On"){   ##############################################   ### STEP 5: Create Network Share and set permissions   # Create sharename with $ at end   $sharename = $alias.alias + "$"   # Get string version of Alias   $rawalias = $alias.alias   # Format the user drive for call   $userdrive = "$networkdrive" + ":\$networkfolder\$rawalias"   # Create Folder for user   New-Item -Path "\\$networkserver\$networkdrive$\$networkfolder\$rawalias" -type directory | Out-Null   # Create share out of that folder we created above   (Get-WmiObject -List -ComputerName $networkserver | Where-Object -FilterScript {$_.Name -eq "Win32_Share"}).InvokeMethod("Create",("$userdrive","$sharename",0,16777216,"Created by OIM"))   # Setup Access List on share   $GetACL = Get-Acl "\\$networkserver\$networkdrive$\$networkfolder\$rawalias"   $Allinherit = [system.security.accesscontrol.InheritanceFlags]'ContainerInherit, ObjectInherit'   $Allpropagation = [system.security.accesscontrol.PropagationFlags]'None'   $AccessRule = New-Object system.security.AccessControl.FileSystemAccessRule("$w2k\$rawalias", "Modify", $AllInherit, $Allpropagation, 'Allow')   $GetACL.AddAccessRule($AccessRule)   Set-Acl -aclobject $GetACL -Path "\\$networkserver\$networkdrive$\$networkfolder\$rawalias"   # Pause for 30 seconds   Start-Sleep -s 30   # Call Function to setup the correct permissions for share for user   set-Sharepermissions -share "$sharename" -server "$networkserver" -user "$rawalias" -Domain "$domainname" -mode "Change"   ##############################################   ### STEP 6: Set Logon Script in AD   Set-ADuser -Identity $rawalias -ScriptPath "kix32.exe"   }}Function set-Sharepermissions ($share,$server,$user,$Domain,$mode) {    $sd = (new-object management.managementclass Win32_SecurityDescriptor).CreateInstance()    $ace = (new-object management.managementclass Win32_ace).CreateInstance()    $Trustee = (new-object management.managementclass win32_trustee).CreateInstance()    $Account = new-object system.security.principal.NtAccount($user)    $SID = $Account.translate([system.security.principal.securityidentifier])    $Trustee.Domain = $Domain    $Trustee.Name = $user    $Trustee.SIDString = $sid.Value     switch ($mode)        {        "Full" {$ace.AccessMask = 2032127}        "Change" {$ace.AccessMask = 1245631}        "Read" {$ace.AccessMask = 1179817}        }    $ace.AceType = 0    $ace.AceFlags = 3    $ace.trustee = $trustee    $SD.DACL = @($ACE.psobject.baseObject)    $share = get-wmiObject -ComputerName $server win32_share -filter "name='$share'"    $inparams = $share.GetMethodParameters("setShareInfo")    $inParams["Access"] = $SD.psobject.baseObject    $inParams["Description"] = "Created by OIM on $Date"    $share.invokemethod("setshareInfo",$inparams,$null)}# This is where we call the two functions aboveMore Here
Courtesy:http://www.robertwmartin.com/?p=158