Wednesday, July 7, 2010

An HTA Example for Mailbox Creation

Sometimes you have might want to make things a little easier for your coworkers to perform somewhat frequent tasks.  This code uses VBscript and Powershell to create a mailbox in Exchange 2007.

In order for this code to work properly, besides editing the file to address your domain, server names, and Exchange 2007 database names, you will need to have a folder called FSO on your c: drive.

Note: Blogger has some limitations on how long the lines can be on the page and therefore uses word wrap. This means that you will have to remove those carriage returns from the code where necessary. It shouldn't be too difficult to see where two lines should have been one. Sorry if there's much confusion.

Another note: The user of this application still needs to be an exchange account administrator.


<HTML>
<Head>
<title>Mailbox Creation Utility</title>
<HTA:APPLICATION
     ID="Mailbox Creation Utility"
     APPLICATIONNAME="Mailbox Creation Utility"
     SCROLL="No"
     SINGLEINSTANCE="yes"
ICON="c:/FSO/mailbox.ico"
    
>
</Head>
<script language="vbscript">

Sub Window_OnLoad
self.ResizeTo 315,575
End Sub

Sub ReloadBtn_OnClick
    Location.Reload(True)
End Sub

Sub btnok_onClick
FName = txtFName.value
LName = txtLName.value
Alias = txtAlias.value
strDatabase = ""
Title = txtTitle.value
If DeleteCheckbox.Checked Then
Delete
Else
If HideCheckbox.Checked Then
Hide
Else
If UnhideCheckbox.Checked Then
Unhide
Else
If Alias = "" Then
Alias = Left(FName, 1) + LName
End If
    If UserOption(0).Checked Then
        strDatabase = "mailserver\PrimaryA Mailbox Database"
    End If
    If UserOption(1).Checked Then
        strDatabase = "mailserver\PrimaryB Mailbox Database"
    End If
If strDatabase = "" Then
Msgbox "Please select the appropriate database."
Else If strDatabase <> "" Then
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.CreateTextFile("c:\FSO\mailbox.ps1", True)
path = filesys.GetAbsolutePathName("c:\FSO\Mailbox.ps1")
getname = filesys.GetFileName(path)
intAlias = Len(Alias)
AliasFLetter = UCase(Left(Alias, 2))
AliasRestLetters = LCase(Right(Alias, intAlias -2))
Alias = AliasFLetter & AliasRestLetters
filetxt.WriteLine("Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin")
filetxt.WriteLine("$usertest = get-user -Identity " & chr(34) & LName & ", " & FName & chr(34) & " |select RecipientType")
filetxt.WriteLine("if " & chr(40) & "$usertest.RecipientType -eq " & chr(34) & "userMailbox" & chr(34) & chr(41))
filetxt.WriteLine("{Write-Host " & chr(34) & "The mailbox already exists." & chr(34) & " -foregroundcolor red}")
filetxt.WriteLine("Else {")
filetxt.WriteLine("enable-mailbox " & chr(34) & LName & ", " & FName & chr(34) & " -Database " & chr(34) & strDatabase & chr(34))
filetxt.WriteLine("Start-Sleep -s 15")
filetxt.WriteLine("set-user " & chr(34) & LName & ", " & FName & chr(34) & " -title " & chr(34) & Title & chr(34) & " -Company " &
chr(34) & "Some Sales Office" & chr(34))
filetxt.WriteLine("get-mailbox " & chr(34) & LName & ", " & FName & chr(34) & " | set-mailbox -Alias " & Alias & " -MaxSendSize 5mb
-MaxReceiveSize 5mb | add-distributiongroupmember -Id " & chr(34) & "DACRIM E-Mail - All" & chr(34))
filetxt.WriteLine("set-CASMailbox " & chr(34) & LName & ", " & FName & chr(34) & " -ActiveSyncEnabled:$False")
filetxt.WriteLine("get-mailbox " & chr(34) & LName & ", " & FName & chr(34) & " | Add-mailboxpermission -accessrights fullaccess
-user domain\administrator")
filetxt.WriteLine("get-mailbox " & chr(34) & LName & ", " & FName & chr(34) & " | Add-mailboxpermission -accessrights fullaccess
-user domain\BESAdmin")
if CreateHiddenCheckbox.checked Then
filetxt.WriteLine("Set-Mailbox -identity " & chr(34) & LName & ", " & FName & chr(34) & "
-HiddenFromAddressListsEnabled $true")
End If
filetxt.WriteLine("}")
filetxt.Close
Set objShell = CreateObject("Wscript.Shell")
objShell.Run("powershell.exe -noexit c:\FSO\mailbox.ps1")
Location.Reload(True)
End If
End If
End If
End If
End If
End Sub

Sub Delete
FName = txtFName.value
LName = txtLName.value
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.CreateTextFile("c:\FSO\mailbox.ps1", True)
path = filesys.GetAbsolutePathName("c:\FSO\Mailbox.ps1")
getname = filesys.GetFileName(path)
filetxt.WriteLine("Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin")
filetxt.WriteLine("disable-mailbox -identity " & chr(34) & LName & ", " & FName & chr(34) & " -confirm:$false")
filetxt.Close
Set objShell = CreateObject("Wscript.Shell")
objShell.Run("powershell.exe -noexit c:\FSO\mailbox.ps1")
Location.Reload(True)
End Sub

Sub Hide
FName = txtFName.value
LName = txtLName.value
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.CreateTextFile("c:\FSO\mailbox.ps1", True)
path = filesys.GetAbsolutePathName("c:\FSO\Mailbox.ps1")
getname = filesys.GetFileName(path)
filetxt.WriteLine("Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin")
filetxt.WriteLine("Set-Mailbox -identity " & chr(34) & LName & ", " & FName & chr(34) & " -HiddenFromAddressListsEnabled $true")
filetxt.Close
Set objShell = CreateObject("Wscript.Shell")
objShell.Run("powershell.exe -noexit c:\FSO\mailbox.ps1")
Location.Reload(True)
End Sub

Sub Unhide
FName = txtFName.value
LName = txtLName.value
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.CreateTextFile("c:\FSO\mailbox.ps1", True)
path = filesys.GetAbsolutePathName("c:\FSO\Mailbox.ps1")
getname = filesys.GetFileName(path)
filetxt.WriteLine("Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin")
filetxt.WriteLine("Set-Mailbox -identity " & chr(34) & LName & ", " & FName & chr(34) & " -HiddenFromAddressListsEnabled $false")
filetxt.Close
Set objShell = CreateObject("Wscript.Shell")
objShell.Run("powershell.exe -noexit c:\FSO\mailbox.ps1")
Location.Reload(True)
End Sub

</script>
<body BGCOLOR=DFDFDF background="c:\fso\mailbox1.jpg" STYLE="background-repeat: no-repeat;=background-position: center;" >
<center><b><font size=5>Mailbox Creation Utility</font></center>
<HR>
<br><input type="checkbox"name="CreateHiddenCheckbox"value="1"> Create Hidden
<br><input type="checkbox"name="HideCheckbox"value="2"> Hide Existing Mailbox
<br><input type="checkbox"name="UnhideCheckbox"value="3"> Unhide Mailbox
<br><input type="checkbox"name="DeleteCheckbox"value="4"> Delete Mailbox
<p> First Name:  <input id="txtFName" type="text" name="txtFName" size="20">
<p> Last Name:  <input id="txtLName" type="text" name="txtLName" size="20">
<p>Alias:  <input id="txtAlias" type="text" name="txtAlias" size="8">
<p> Title:  <input id="txtTitle" type="text" name="txtTitle" size="27">
<p>Group Membership:
<br><input type="radio" name="UserOption" value="1"> Administration
<br><input type="radio" name="UserOption" value="2"> Sales
<p><center><input id="btnOK" type="button" value="Create\Update" name="btnOK"></center>
<br><center><input id="reloadBtn" type="button" value="Reload" name="reloadBtn"></Center>
</b>
<table>
<tr align="right"><td width="20%">Version .03</td></tr>
</table>
</body>
</HTML>


After creating the FSO folder on your c: drive, copy the above code into notepad, edit the necessary changes to address your environment (domain, Exchange server name, and database names) and save it with a .HTA extension.

This should get you off to a good start in making your own application to address your office's needs.

No comments:

Post a Comment