The Integrated Scripting Environment has many things: A rich debugger, a nifty object model,  and support for multiple runspaces, but it doesn’t have spell check.  Since I end up writing a lot of documentation in the ISE for my functions, I decided to write a quick Spellchecker function.

In order to write this I used some functions from IsePack and some functions from WPK.  Both IsePack and WPK can be found as part of the PowerShellPack

WPF text controls actually all have a spell check built into them, which saves almost all of the trouble of getting this to work.  Unfortunately, it means that the spell check as it is written pops up a small UI for each thing you want to check.

Import-Module IsePack, WPK            
            
function Test-Spelling {            
    <#
    .Synopsis
        Tests the spelling on some text
    .Description
        Launches a text box with spell check enabled to highlight any spelling errors.
    .Example
        Test-Spelling "Can I speel?"
    .Example
        # Uses IsePack's Add-IseMenu to add a spellcheck hotkey to the Ise
        Add-IseMenu -Name "SpellCheck" -Menu @{
            "Test-Spelling" = {
                Select-CurrentText -NotInOutput | 
                    Where-Object { $_ } | 
                    Test-Spelling
            } | Add-Member NoteProperty ShortcutKey F7 -PassThru
        }
    #>            
    param(            
    # The phrase to check for spelling errors            
    [Parameter(ValueFromPipeline=$true)]            
    $phrase            
    )            
                
    process {            
        New-TextBox -Resource @{Phrase=$phrase} -On_Loaded {            
            $phrase = $this.Resources.Phrase            
            $this.Text = $phrase            
            $this.SpellCheck.IsEnabled = $true            
        } -ASJob            
    }            
}            
            
Add-IseMenu -Name "SpellCheck" -Menu @{            
    "Test-Spelling" = {            
        Select-CurrentText -NotInOutput |             
            Where-Object { $_ } |             
            Test-Spelling            
    } | Add-Member NoteProperty ShortcutKey F7 -PassThru            
}            
            

The script imports IsePack and WPK, writes the test spelling function Test-Spelling (with an example from the command line and an example that adds the menu item), and adds it to the IseMenu all in a scant 42 lines. Go ahead and give it a try. F7 becomes the shortcut key for spell check, just as it is in Word.

Hope this helps,

James Brundage [MSFT]