ISEScriptingGeek.psm1
#dot source the scripts Get-Childitem $psScriptRoot\functions\*.ps1 | Foreach-Object {. $_.FullName} <# Add an ISE Menu shortcut to save all open files. This will only save files that have previously been saved with a title. Anything that is untitled still needs to be manually saved first. #> $saveall = { $psise.CurrentPowerShellTab.files | Where-Object {-Not ($_.IsUntitled)} | ForEach-Object { $_.Save() } } #a function to display scripting about topics Function Get-ScriptingHelp { Param() Get-Help about_Scripting* | Select-Object Name, Synopsis | Out-GridView -Title "Select one or more help topics" -OutputMode Multiple | ForEach-Object { $_ | Get-Help -ShowWindow} } #a function to for parameters for the current script #using Show-Command Function Start-MyScript { Param([string]$Path = $psise.currentfile.FullPath) If (Test-path $Path) { Show-Command -Name $path } else { Write-Warning "No file found" } } #end function #set location to current script location Function Set-ScriptLocation { [cmdletbinding()] [alias("sd")] Param() $path = Split-Path -Path $psISE.CurrentFile.FullPath set-location -path $path clear-host } #create a custom sub menu $jdhit = $psise.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("ISE Scripting Geek", $null, $null) #create some child menus for better organization $Book = $jdhit.Submenus.add("Bookmarks", $Null, $Null) $convert = $jdhit.Submenus.Add("Convert", $Null, $null) $dates = $jdhit.submenus.Add("Dates and Times", $Null, $Null) $files = $jdhit.Submenus.Add("Files", $Null, $null) $work = $jdhit.submenus.Add("Work", $Null, $null) #add my menu addons in sort of alphabetical order [void]$jdhit.submenus.Add("Add Help", {New-CommentHelp}, "ALT+H") [void]$convert.submenus.Add("Convert All Aliases", {ConvertTo-Definition $psise.CurrentFile.Editor.SelectedText}, $Null) [void]$convert.submenus.Add("Convert Help to Comment Help", {ConvertTo-CommentHelp}, "Ctrl+Shift+H") [void]$convert.submenus.Add("Convert Code to Snippet", {Convert-CodetoSnippet -Text $psise.CurrentFile.Editor.SelectedText}, "CTRL+ALT+S") [void]$convert.submenus.Add("Convert Selected to Region", { $psise.CurrentFile.Editor.InsertText("#region`r`r$($psise.CurrentFile.Editor.SelectedText)`r`r#endregion")}, $null) [void]$convert.submenus.Add("Convert Selected From Alias", {ConvertFrom-Alias}, $Null) [void]$convert.submenus.Add("Convert Single Selected to Alias", {Convert-AliasDefinition $psise.CurrentFile.Editor.SelectedText -ToAlias}, $Null) [void]$convert.submenus.Add("Convert Single Selected to Command", {Convert-AliasDefinition $psise.CurrentFile.Editor.SelectedText -ToDefinition}, $Null) [void]$convert.Submenus.Add("Convert to lowercase", {$psise.currentfile.editor.insertText($psise.CurrentFile.Editor.SelectedText.toLower())}, "CTRL+ALT+L") [void]$convert.Submenus.Add("Convert to parameter hash", {Convert-CommandToHash}, "Ctrl+ALT+H") [void]$convert.submenus.Add("Convert to text file", {ConvertTo-TextFile}, "ALT+T") [void]$convert.Submenus.Add("Convert to uppercase", {$psise.currentfile.editor.insertText($psise.CurrentFile.Editor.SelectedText.toUpper())}, "CTRL+ALT+U") [void]$jdhit.Submenus.add("Create new DSC Resource Snippets", {Get-DSCResource | New-DSCResourceSnippet}, $Null) [void]$jdhit.submenus.add("Edit your ISE profile", { If (Test-Path $Profile) { Open-EditorFile $profile } else { write-warning "Cannot find $profile" } }, $Null) [void]$convert.Submenus.Add("Convert to block comment", {ConvertTo-MultiLineComment}, "Ctrl+Alt+B") [void]$convert.Submenus.Add("Convert from block comment", {ConvertFrom-MultiLineComment}, "Ctrl+Alt+C") [void]$files.Submenus.Add("Close All Files", {CloseAllFiles}, "Ctrl+Alt+F4") [void]$files.Submenus.Add("Close All Files Except Active", {CloseAllFilesButCurrent}, "Ctrl+Shift+F4") [void]$files.submenus.Add("Edit snippets", {Edit-Snippet}, $Null) [void]$files.submenus.Add("Get Script Profile", {Get-ASTProfile}, $Null) [void]$jdhit.submenus.Add("Get Scripting Help", {Get-ScriptingHelp}, $Null) [void]$files.Submenus.add("Find in File", {Find-InFile}, "Ctrl+Shift+F") [void]$files.Submenus.Add("New File", {New-FileHere}, "Ctrl+Alt+N") [void]$dates.submenus.Add("Insert Datetime", {$psise.CurrentFile.Editor.InsertText(("{0} {1}" -f (get-date), (get-wmiobject win32_timezone -property StandardName).standardName))}, "ALT+F5") [void]$dates.submenus.Add("Insert Short Date", {$psISE.currentfile.editor.inserttext((Get-Date).ToShortDateString())}, "ALT+F6") [void]$dates.submenus.Add("Insert Short Time", {$psISE.currentfile.editor.inserttext((Get-Date).ToShortTimeString())}, "ALT+F7") [void]$dates.submenus.Add("Insert Short Date Time", {$psISE.currentfile.editor.inserttext((Get-Date -Format g))}, "ALT+F8") [void]$dates.submenus.Add("Insert Long Date", {$psISE.currentfile.editor.inserttext((Get-Date -displayhint Date))}, "ALT+F9") [void]$dates.submenus.Add("Insert UTC Date", {$psISE.currentfile.editor.inserttext((Get-Date -format u))}, "ALT+F10") [void]$dates.submenus.Add("Insert GMT Date", {$psISE.currentfile.editor.inserttext((Get-Date -format r))}, "ALT+F11") [void]$jdhit.Submenus.add("New CIM Command", {New-CimCommand}, $Null) [void]$files.submenus.Add("Open Current Script Folder", {Invoke-Item (split-path $psise.CurrentFile.fullpath)}, "ALT+O") [void]$files.Submenus.Add("Open Selected File", {Open-SelectedISE}, "Ctrl+Alt+F") [void]$files.Submenus.Add("Reload Selected File", {Reset-ISEFile}, "Ctrl+Alt+R") [void]$jdhit.submenus.Add("Print Script", {Send-ToPrinter}, "CTRL+ALT+P") [void]$jdhit.submenus.Add("Run Script", {Start-MyScript}, "CTRL+SHIFT+Z") [void]$files.Submenus.Add("Save All Files", $saveall, "Ctrl+Shift+A") [void]$files.submenus.Add("Save File as ASCII", {$psISE.CurrentFile.Save([Text.Encoding]::ASCII)}, $null) [void]$jdhit.Submenus.Add("Search selected text with Bing", {Get-SearchResult -SearchEngine Bing}, "Shift+Alt+B") [void]$jdhit.Submenus.Add("Search selected text with Google", {Get-SearchResult -SearchEngine Google}, "Shift+Alt+G") [void]$jdhit.Submenus.Add("Send to Word", {Copy-ToWord}, "Ctrl+Alt+W") [void]$jdhit.Submenus.Add("Send to Word Colorized", {Copy-ToWord -Colorized}, $Null) # [void]$jdhit.submenus.Add("Sign Script", {Write-Signature}, $null) [void]$jdhit.Submenus.Add("Switch next tab", {Get-NextISETab}, "Ctrl+ALT+T") [void]$jdhit.Submenus.Add("Use local help", {$psise.Options.UseLocalHelp = $True}, $Null) [void]$jdhit.Submenus.Add("Use online help", {$psise.Options.UseLocalHelp = $False}, $Null) [void]$book.Submenus.Add("Add ISE Bookmark", {Add-ISEBookmark}, "Ctrl+Shift+N") [void]$book.Submenus.Add("Clear ISE Bookmarks", {Remove-Item $MyBookmarks}, "Ctrl+Shift+C") [void]$book.Submenus.Add("Get ISE Bookmark", {Get-ISEBookmark}, "Ctrl+Shift+G") [void]$book.Submenus.Add("Open ISE Bookmark", {Open-ISEBookmark}, "Ctrl+Shift+O") [void]$book.Submenus.Add("Remove ISE Bookmark", {Remove-ISEBookmark}, "Ctrl+Shift+K") [void]$book.Submenus.Add("Update ISE Bookmark", {Update-ISEBookmark}, "Ctrl+Shift+X") [void]$work.submenus.Add("Add current file to work", {Add-CurrentProject -List $currentProjectList}, "CTRL+Alt+A") [void]$work.submenus.Add("Edit current work file", {Edit-CurrentProject -List $currentProjectList}, "CTRL+Alt+E") [void]$work.submenus.Add("Open current work files", {Import-CurrentProject -List $currentProjectList}, "CTRL+Alt+I") #define some ISE specific variables $MySnippets = "$Env:USERPROFILE\Documents\WindowsPowerShell\Snippets" $MyModules = Join-Path -Path $env:userprofile -ChildPath "documents\WindowsPowerShell\Modules" $MyPowerShell = "$env:userprofile\Documents\WindowsPowerShell" $MyBookmarks = Join-Path -path $myPowerShell -ChildPath "myISEBookmarks.csv" $CurrentProjectList = Join-Path -Path $env:USERPROFILE\Documents\WindowsPowerShell -ChildPath "currentWork.txt" Export-ModuleMember -Variable 'MySnippets','MyModules','MyPowerShell','MyBookmarks','CurrentProjectList' -alias 'ccs', 'gcmd', 'glcm''tab', 'sd' |