This page provides you with the ISESteroids version history and the fixes applied to each version. To update to a new version, simply download the latest ISESteroids release, and copy it over the existing installation: Extract the ZIP file, then run the file install.bat inside the ZIP file – done.
Use Get-SteroidsVersion to find out your ISESteroids version. There is also a command in the Help menu that displays the ISESteroids version you are using, and it displays when you run Start-Steroids.
You can download the latest public version here:
To quickly double-check the binaries for malware, we recommend you visit www.virustotal.com and enter the download URL http://www.powertheshell.com/download/ISESteroids.zip. On the analysis result page, you first see the results for this website. Click the link to view the scan results for the download package.
Note that the default ISESteroids installation includes Microsoft’s psexec.exe tool which may be flagged by some antivirus engines.
In case your company policy does not allow the use of Microsoft’s psexec.exe tool, here is a special package available without it:
Feel free to double-check the binaries for malware: visit www.virustotal.com and enter the download URL: http://www.powertheshell.com/download/AV/ISESteroids.zip. On the analysis result page, you first see the results for this website. Click the link to view the scan results for the download package.
And here is a quick guide explaining the installation steps.
To file bug reports and submit suggestions, use the support forum at the bottom of all ISESteroids pages.
Read more about the current state of ISESteroids development, and our free update and upgrade policy.
126.96.36.199 (Jan 5, 2019)
- In Windows 10 starting in Insider Builds in fall 2018, the interactive console no longer accepted commands. Pressing ENTER would not execute the command. Fixed.
188.8.131.52 (released July 17, 2017)
- Scope Guides work for many more structures such as classes and switch statements
- If a scope is missing its closing structure, it shows in red rather than gray
- Scope guides for command arguments now use the command start column
- Scope guides for method calls now use the method term start column
184.108.40.206 (released July 14, 2017)
- New Feature “Scope Guides”: when enabled, ISESteroids draws a fine vertical dotted line to mark the opening and ending tags of scoped structures, like conditions, or loops. This way, it is easy to identify where a structure starts and ends. This feature works very similar to VisualStudio 2017. It is enabled by default and can be disabled via the “Guides” menu button.
- When creating an EXE from script (“Tools”/”Turn Code into EXE”), you can now specify a version number for the exe file. This version number can later be found in the file properties, and Windows will display it just like any other exe version number.
- Added more comprehensive text messages when there are license problems. Added a button to the license overlay that lets you easily open the license folder where ISESteroids looks for license files. This way, you can more easily review your license file(s), and add or remove them.
- Some context menus like “Refactor / One Array Element per Line” were missing. Fixed.
- When creating an EXE from script (“Tools”/”Turn Code into EXE”), the exe file name could not contain blank spaces. Fixed.
- When running ISESteroids for the first time, the EULA dialog occasionally displayed behind the application window. Fixed.
220.127.116.11 (released Dec 28, 2016)
Some Antivirus engines reported false positives because of sample code shipped with ISESteroids. Removed/changed sample code to prevent false alarms.
18.104.22.168 (released Nov 16, 2016)
- When you create an EXE (Tools/Turn Code into EXE), there is a new option: “Untrusted Network Protection”. When this is enabled, the produced EXE will not run when it is located on a non-trusted network location. This was the default in previous versions of ISESteroids. With this release, you can now leave this checkbox unchecked to produce EXEs that run from anywhere, including non-trusted file shares.
- When the code you are turning into an EXE creates user interfaces using Windows Forms, ISESteroids now offers to enable modern Windows visual styles so the UI elements adopt to the current modern Windows styles. With WPF user interfaces, this is not needed. WPF always uses the modern styles.
22.214.171.124 (released Oct 27, 2016)
- Added some refinements to “Convert Syntax to Function”
- PSSharper adornments could still be displaced when entering text rapidly. Changed internal architecture, fixed now.
- When you enabled automatic check for updates, and there is no Internet connection, a dialog box would pop up at start asking whether you really want to check for updates. Fixed. Dialog box only shows when you manually invoke an update check (menu “Help”). When there is no Internet connection, scheduled update checks are skipped silently.
126.96.36.199 (released Oct 27, 2016)
- When you paste code from the Internet or PDF documents, and the content contains unprintable or illegal characters such as typographic hyphens etc, ISESteroids slides in a warning panel at the bottom of the editor pane, and offers to autocorrect the characters.
- When you right-click an empty spot in the editor, and choose “WPF” in the context menu, there is now the option to add your own XAML templates to this menu, so you can start building your personal XAML library.
- PowerShell 5.1 introduced a new built-in variable “PSEdition”. Updated, the recycling button in the variable monitor no longer tries to delete this write-protected variable if present.
- In menu Help, there is now a “Check for ISESteroids Updates” option. You can check for updates manually, or in intervals. If a newer version is detected, you can update ISESteroids.
- When you convert selected code to HTML, ISESteroids added a non-breaking hyphen. When you later copy code from a website, the code would not work correctly in PowerShell. Fixed.
- PSSharper adornments could be displaced occasionally, especially with large scripts. Fixed.
- When turning Where/Foreach-Object into a function, there was a comma missing before the HelpMessage statement. This caused a syntax error. Fixed.
- When ISESteroids was launched within an active debugger session, launch failed. Fixed. When ISESteroids detects an active debugger session during launch, it stops the debugger before trying to load itself.
188.8.131.52 (released October 19, 2016)
- When you selected code that consists of more than one token, and press F2, the advanced search&replace dialog would not work correctly. Fixed.
- We got occasional reports about a launch exception complaining about a cross-thread access. We hope to have this fixed now. If you still do see “Exception 3” messages during launch, please file a support ticket asap! Thx… 🙂
184.108.40.206 (released October 13, 2016)
- Fixed an issue with the EXE Generator (Tools/Turn Code into Exe) when the code contained a digital signature and the EXE was run with PowerShell 5. Now, when your code contains a digital signature and you have the private key for it, when you create the EXE and check to sign the EXE, the signature is correctly transferred from your script to the EXE file.
220.127.116.11 (released October 12, 2016)
- Fixed a scoping issue with the EXE generator (Tools/Turn Code into EXE) that could cause issues when you wanted to pass on variables to functions outside your own scope (i.e. imported modules).
- Improved performance.
18.104.22.168 (released October 7, 2016)
- CTRL+ALT+D deletes the current line in the editor
- When you click in an empty space inside the editor tabs, a new blank document opens
- WPF VisualStudio 2-way sync did not work for some systems and produced an error message (“Thread cannot access…”). Fixed.
22.214.171.124 (released September 30, 2016)
- Added advanced Search&Replace: when you click anywhere and press F2, an immediate token-based search&replace starts. Multiple enhancements and changes in 126.96.36.199.
- When you select text instead, and then press F2, an advanced search&replace dialog opens which gives you massive options, including the option to only show affected lines and hide all others.
- The new Search&Replace offers plain text, regex based, and semantic search. You can have ISESteroids display only the affected lines for an immediate overview of the impact a rename has. You can click any search result in the editor to exclude it from bulk-rename.
- When a document that was loaded into ISESteroids is deleted by an external program, ISESteroids opens a warning and offers to re-save the document.
- Obfuscator now checks whether a function is ever called from a script. If it is not called from anywhere, it is considered global(public), and neither the function nor its parameters are obfuscated.
- Obfuscator now does not obfuscate parameters when the attribute ValueFromPipelineByPropertyName is set because the parameter name is then bound to object property names and must not change.
- EXEGenerator: generated EXE now treats /? like -?
- EXE Generator: emits clean error message when there are script exceptions.
- When creating a snippet and using the sibling function, when there were no siblings, the snippet was not saved. Fixed.
- Colors for fields in -f operator expression was a light green. Changed to darker green.
- EXEGenerator: when EXE is run with PowerShell5, it would not always show all outputted information. Fixed.
- EXEGenerator: arguments with spaces are handled correctly
- Advanced Search Results Addon showed large file icons on some system. Fixed icon size to 16×16.
- CmdletBinding() was marked “not needed” when there were *any* other attributes. Fixed. Only when there are Parameter attributes.
- When you click a PSSharper issue in the code editor, and the PSSharper addon panel had no focus, PSSharper would still switch to the addon panel. That was annoying. Fixed.
- Obfuscator would fail to rename function calls that used scope modifiers. Fixed.
- Obfuscator would encode expandable strings even if they contained subexpressions. Fixed.
- Dialog windows were not owner-centered, so in a multi-display scenario, they could open on another screen. Fixed. Dialogs now always center nicely.
- When you rename a variable by clicking it and pressing F2, and you just changed casing (the variable name itself stayed the same), ISESteroids would still show a warning that such a variable already exists. Fixed.
- When a file is changed outside ISESteroids, a message opens asking whether you want to reload the changed document. This did not always work. Fixed.
- When using “Visual Studio 1-way sync” to edit WPF UI, the changes performed inside VisualStudio were not always synced back to ISESteroids. Fixed.
188.8.131.52 (released September 22, 2016)
- Added a new option “Disable PSSharper Tooltips” to menu “PSSharper”. When enabled, no tooltips show while hovering over issues in code. Press CTRL while hovering to show tooltips on demand.
- PSSharper now recognizes the parameter -Depth in Get-ChildItem as “requires PowerShell 5”
- PSSharper now detects version information for common parameters such as -PipelineVariable
- PSSharper now recognizes -ErrorAction Ignore as “requires PowerShell 3”
- PSSharper now correctly relates automatic variables such as $PSScriptRoot and $InformationVariable to required PowerShell versions
- PSSharper language flow analysis now follows variables that are submitted to methods and contain scriptblocks. Such scriptblocks are no longer flagged as “not used”. Variable scope is reflected accurately inside these scriptblocks.
- Strings in Attributes are no longer added to the list of potentially duplicate literals.
- HTML Generator now uses non-breaking hyphens for code taken from the editor to ensure there is no line break after hyphens. This was done already in previous versions for code taken from the console.
- PSSharper did not show tooltips over adornments when the adorned code was very short. Fixed.
- Fixed a number of benign PSSharper issues where adornments for variables were not accurate.
- When executing a selection (press F8 for example), and there was no selected text, ISESteroids occasionally selected a child expression when really a parent expression would have been more suitable. Fixed.
184.108.40.206 (released September 22, 2016)
- When turning code into HTML and the code contained “$” (which is kinda common in PowerShell), the resulting HTML sometimes was malformed. Reason: “$” was not correctly escaped in the regular expressions creating the HTML. Fixed.
220.127.116.11 (released September 21, 2016)
- One bug slipped: the script-to-exe converter used a hard-coded path to windows files, so the produced exe would not run on systems with windows installed in a different location. Fixed.
18.104.22.168 (released September 21, 2016)
- Rename: when you click a token (without selecting anything) and press F2 or choose the context menu Refactor/Rename, ISESteroids performs an “intelligent” replace. It only replaces the same token type, or in case of a variable the affected variables and parameters. When however you SELECT text, ISESteroids does a primitive search&replace over all text content. It will not however replace inside of digital signatures as this never makes sense. Since a “primitive” search&replace can be dangerous, when you invoke this with text selected, a dialog opens and asks what you *really* want to do. In the past, users have accidentally used “primitive” replace to rename variables which is generally not a good idea.
- HTML Export: ISESteroids now has context menu commands both for the editor and the console that let you copy the selected code to HTML which is then placed on the clipboard. You can also press CTRL+ALT+C. ISESteroids creates pure and simple color-coded HTML that can be pasted into blogs and webpages without the need to use external code coloring tools. The resulting html matches 100% so there are no color differences or misaligned token. When you create a HTML snapshot, the ISE statusbar shows a link to a template file. You can click this link to wrap the generated HTML to your own template, i.e. so it maches your HTML snippet format you may need to paste directly to a blog.
- EXE generator completely rewritten. When you choose Tools/Turn Code into EXE, the new generator:
- is fully memory based (no temporary files anymore)
- supports parameters and parameter help (-?)
- supports $PSScriptRoot, $PSCommandPath, $MyInvocation, and points to the EXE
- supports $LASTEXITCODE (reports back the exit code to the caller)
- When you save a script that has an invalid digital signature, ISESteroids offers to either remove the invalid signature, or replace it with your own. If the signature is yours anyway (you originally signed it and own the private key), ISESteroids silently updates it.
- Cleaned up the menu “Tools”
- Using a catch block with type [System.Exception] is now treated as error, and PSSharper offers to remove the type. By using this type, you are effectively disabling any specialized catch handler you may have. If you want to handle all exceptions in one catch clause, do not use a type at all.
- Strings inside named parameter attributes were treated as replaceable strings when in reality parameter attributes must be constant. Fixed.
- When certain cmdlets like Out-File or Export-CliXML were used without receiving pipeline input, PSSharper reported this as error. These cmdlets can receive input through parameters, too, though. Fixed. No error reported when the appropriate parameter has an argument.
- When you right-click a token, ISESteroids offered “Refactor/Rename” in its context menu only for some token types. Fixed.
- Some PSSharper checks required attributes like [Parameter()] to be case-sensitive which is wrong. Fixed. Now PSSharper ignores attribute name casing.
- PSSharper recommends to strip HelpMessage attributes from optional parameters. When the autofix is applied, and there were more than one attribute, a comma remained. Fixed.
- When a script contained a valid signature, and then the signature was removed, the status bar icon did not update. Fixed.
22.214.171.124 (released September 15, 2016)
- PSSharper fix to consolidate strings would not always quote the string correctly. Fixed.
- PSSharper automatic error handlers not always picked the most specific exception type. Fixed.
- Reverted the change to the exe creator that was introduced in 126.96.36.199. Instead, we plan to redo and enhance the exe tool in a future release to incorporate all the feature requests submitted.
- PSSharper would mark scriptblocks in ValidateScript attributes as “potentially not used”. Fixed.
188.8.131.52 (released September 15, 2016)
- When there is a syntax error, PSSharper now displays a red bulb. If there is a fix available for the syntax error, you can click the bulb to apply it. If there is no fix available, you can create one yourself. Click the light bulb to create a fixer script for the particular syntax error. We’ll elaborate on this in a blog post soon, explaining what your options are. Meanwhile, you might want to look at the fixer that are shipping with ISESteroids to get a feeling for this.
- ALT+ENTER now moves to the next PSSharper issue in your code, and when you are on an issue with a default fixer, applies the fixer.
- When there are strings inside a scriptblock that have same content, PSSharper suggests to consolidate them into one variable, and offers a fixer to do so.
- When there are semicolons in a script, PSSharper suggests to replace them by newlines, and provides a fix for this.
- When a catch block is placed before a specific catch block (syntax error), PSSharper shows an error squiggle and offers to move the catch block to the right place.
- When there is more than one generic catch block in a try structure, PSSharper shows a strike-through adornment and offers to remove all illegal catch blocks.
- When you turn a cmdlet into a function wrapper (right-click cmdlet, choose Source Code/Convert To Function), ISESteroids now also adds dynamic parameters to the function wrapper.
- When PSSharper detects Out-* cmdlets such as Out-File, or Export-* cmdlets such as Export-CSV at the beginning of a pipeline, it issues a warning
- The name of a workflow no longer is checked for verb-noun syntax
- Added text marker adornments to variables that are undefined
- When there are no more issues for a given PSSharper category, the PSSharper addon will jump to another category but ignore “Disabled Rules”. They only show when you explicitly click their button on the PSSharper bar
- When a script is signed with a self-signed certificate, and the certificate was made trustworthy on a local machine by copying it into the root cert container, you can now “untrust” this certificate: click the certificate icon in the status bar, and uncheck “Trust this certificate”. ISESteroids will remove the self-signed cert from the root container.
- A current limitation in PowerShell 3-5 affects catch blocks with an exception type: if the exception is raised by -ErrorAction Stop, then $_ inside catch MAY MISS some InvocationInfo details such as ScriptLineNumber. Added a note about this to automatically generated catch blocks.
- When you convert a script with a param() block to an executable, and when the user then submits the parameter -? to the exe, the parameter syntax shows right away, and no “press any key” message is shown.
- “inlinescript” statements inside a workflow no longer are flagged as functions with missing named parameters
- Some double-quoted strings were accidentally treated as single-quoted strings by PSSharper, and inappropriate warnings were issued. Fixed.
- In some cases PSSharper would replace a command name when turning positional parameters into named parameters. Fixed.
- When you run selected code (press F8) in full editor mode, ISESteroids did not automatically switch to the console pane. Fixed.
- LiteralView sometimes did not turn off completely, so some text in your code continued to use a slightly different font size and font type. Fixed.
- When PSSharper offered to add an error handler to a line with a runtime error, in some occasions it picked the wrong exception type. Fixed.
- When PSSharper offered to add an error handler to a line with a runtime error, in some occasions it misplaced the try..catch block. Fixed.
- When a cmdlet uses the parameter -ErrorVariable, PSSharper did not recognize this as variable assignment. Fixed.
- When you type a syntax definition into the editor, then select it, click the “Hammer” icon in the debugger margin and choose “Convert Syntax to Function”, PSSharper creates the corresponding PowerShell function. If your syntax is multi-line, PSSharper creates multiple parametersets. The generated code did not show a switch statement for each parameterset. Fixed.
- The “Save As” menu command was broken in PowerShell 5. Fixed.
184.108.40.206 (released September 9, 2016)
- PSSharper now starts to offer auto-fixes for syntax errors.
- Added new keyboard shortcut ALT+ENTER: when there is exactly one default PSSharper fix available for the current caret position, the fix is applied. Else, the PSSharper context menu opens so that you can select the fix or refactoring manually.
- When a string is missing its terminating delimiter, and the string is in the middle of other code, the PowerShell parser reports syntax errors that are caused by this, and misses the real cause. Fixed. ISESteroids correctly identifies the offending string and marks it.
- When a digital signature matched the content but the signer was untrusted on the system, the tooltip showed a confusing message. Fixed.
- The PSSharper function “Turn anonymous scriptblock into function” has issues when the where-object/foreach-object statement contained code with multiple lines. Fixed.
- When a cmdlet call contained switch parameters, and there was a direct assignment to the switch parameter – such as -recurse:$false – then PSSharper reported missing named parameters. Fixed.
- This was annoying: PSSharper opened the addon pane when an issue in the code was clicked. Fixed. PSSharper will no longer open the addon panel on issue click. It will only open it when a button on the PSSharper bar was clicked.
- When PSSharper adds an error handler, and the offending command is part of a larger logical structure, like an assignment, the error handler was placed in the middle of this structure. Fixed.
- When opening Advanced Search (Edit / Advanced Search), and the addon area was previously manually closed, the addon was not visible. Fixed.
220.127.116.11 (released September 6, 2016)
- When an application (EXE) is used in a script and no absolute path is specified, PSSharper now treats this as “Suggestion” and no longer emits a “Warning”.
- When you turn selected code into a function, and the code uses environment variables as default values to parameters, the parameter type is now “System.String”.
- Paths that start with environment variables are now also underlined by PSSharper and can be clicked (hold CTRL) to open the location in Windows Explorer.
- When PSSharper adds a catch block, the error record inside of it ($_) is now typed “ErrorRecord” so that you get correct IntelliSense for it when you edit the code.
- When PSSharper turns Foreach-Object or Where-Object into a function, it no longer uses parameterless $_ but instead declares a pipeline-aware parameter named $InputObject. This makes it easier to later add more parameter.
- When a script is executed, ISESteroids shifted focus to the console. Changed to default behavior: focus stays with last editor.
- Fixed a couple of minor quirks with digital signature support
- Fixed a confusing status bar message when saving scripts
- Parameters -FromSession and -ToSession in Copy-Item were not flagged as #requires 5.0. Fixed.
- When an unhandled runtime error occured in your code, and you asked PSSharper to add an error handler, PSSharper did not check whether the offending command was part of a larger pipeline. The try/catch block could be inserted in the middle of a pipeline statement. Fixed.
- When there was an empty catch block, and the catch block content was zero length, PSSharper could not insert a default catch handler. Fixed.
18.104.22.168 (released September 5, 2016)
- Completely rewritten risk management and support for digital signatures.
- Ability to import certificates from pfx files that contain more than one certificate. Automatically filters out unsuitable certificates (no private key, no code signing EKU).
- Menu “PSSharper” now has a new menu item “Disable Digital Signature Support”. When you enable this, all PSSharper checks related to digital signatures are disabled. This can be useful if you (a) don’t care about digital signatures, or (b) work in an environment with limited network access where certificate revocation lists cannot be accessed, and you experience extensive delays.
- PowerShell Gallery now emits warnings when a module overwrites existing cmdlets. ISESteroids replaced Get-PSBreakpoint with its own version. Removed. Download and install from PowerShellGallery should work again with no error messages.
- Pushed ILSpy to the latest version.
- When you right-click a document tab, choose “Encoding” to view the current document encoding and change it. Added tooltips explaining what the different encodings are for.
- When a script has a digital signature that does not match the script content, and you own the private key to the signer cert, the signature is not shown in strike-through font but instead ghosted to indicate that you can update the signature.
- ISESteroids now automatically updates signatures right before you save a script (provided that you own the private key). In previous versions, ISESteroids updated the signature only after the script was saved.
22.214.171.124 (released August 31, 2016)
- There was a bug that would show frequent “Object not found” messages, for example when using mkdir. It occured because PSSharper was looking for the command origin and could not find it. Fixed. If you continue to see it, please file a support ticket.
- When a .NET type was added dynamically (i.e. using Add-Type), PSSharper did not pick it up because it used a cache. Changed the cache.
- When a .NET type was added dynamically (i.e. using Add-Type), PSSharper suggested to import the dynamic DLL which does not make sense. Fixed.
- When PSSharper detects global variables, the fix always applies to all instances. When the fix was invoked for all instances in the script, the prefix could be added multiple times. Fixed.
126.96.36.199 (released August 30, 2016)
- Added logic to reduce flickering when PSSharper checks script during typing.
- When PSSharper adds an environment variable with parens in its name, the environment variable is correctly escaped in braces.
188.8.131.52 (released August 30, 2016)
- PSSharper now flags cmdlets from external modules when “PowerShell on Linux” is checked in the targeted PowerShell versions. Autofixer opens module location so you can check whether the module runs on Linux.
- Added new context menu command for console: “Clear All” clears console content.
- PSSharper now supports Digital Signatures. It reports missing or invalid signatures, and provides management functionality through the margin icon, i.e. removal or update of signatures.
- Added check for illegal line breaks (Linux)
- Added check for missing shebang (Linux)
- Added check for non-UTF8 file encoding (Linux)
- Added check for BigEndianUnicode encoding (breaks digital signatures)
- When a script is converted to an EXE file, and the script shows form based windows, and the EXE console window is set to be hidden, then ISESteroids detects this and offers to refactor the PowerShell code to make sure the form based windows display correctly. Previously, form based windows were always also invisible when the calling application was invisible.
- When the current document is changed, PSSharper removes all adornments until the new context is analyzed.
- When a script is converted to an EXE file, and the option to digitally sign the EXE is checked, then ISESteroids will look for a signature inside the script file first. ISESteroids tries to use the signer certificate to also sign the EXE file. If there is no signature, or the signature refers to a certificate with no private key, a dialog opens and asks for a certificate.
- When a script is converted to an EXE and sets an exit code (via command EXIT [int]), the exit code is now passed on to the caller. When the EXE is invoked from PowerShell, the exit code is found in $LASTEXITCODE. When the EXE is invoked from batch, the exit code is found in %ERRORLEVEL%.
- Made Font Selector Dialog more resposive. It now loads the list of available fonts in the background. Previously, there was a delay until the font dialog opened.
- Changed some logic to cut down on text flickering in large scripts caused by classification changes.
- Dialog “Foreach-Object-To-Function Converter” showed two OK buttons. Fixed naming of Cancel button.
- PSSharper: when adding a missing command extension, the extension was added at the end of the command line, not the command. Fixed.
- PSSharper: when adding a missing shebang, a linebreak was missing. Added.
- When there are PowerShellOnLinux issues, adding the #requires statement could be a version 0.0. Fixed.
- When a double-quoted string contains variables, PSSharper suggests to use the -f operator. PSSharper now ignores drive-qualified variables (like environment variables), and command terms.
- PSSharper suggested use of -f operator in bareword strings (strings with no quotes at all). Fixed.
- When a script was converted to an EXE, and there was a signature in the script, the option to ask for a keypress on close caused the exe to fail. Fixed.
- When creating an EXE from a script (Tools menu), you can check the option to digitally sign the newly created exe file. This option had no effect. Fixed.
- When a script uses PowerShell 5 classes or enums, PSSharper sometimes took longer than expected to check the rules which could cause flickering. Fixed.
- LiteralView did not keep state. Fixed.
- LiteralView did not support local custom fonts (the ones shipping with ISESteroids). Fixed.
- When exporting a function to a module, the module loader loaded init.ps1 twice. Fixed.
- The signature icon in the status bar not always updated correctly. Fixed.
184.108.40.206 (released August 18, 2016)
- When a single-quoted (literal) string contains potentially expandable content such as a variabe, PSSharper emits a warning issue and offers to change quoting.
- Double-quoted strings with expandable content now offer a PSSharper fix to turn them into a statement using the -f formatting operator.
- When turning a Foreach-Object or Where-Object into a function, PSSharper now pops up a dialog and lets the user pick a name for the newly created function.
- PSSharper now has refactoring options that do not show in the PSSharper addon. They are available in the PSSharper context menu only. When you click a function and then click the PSSharper icon in the margin, you can see for example a refactoring option to move the function into a separate module.
- PSSharper now supports additional text adornment colors: green, red, blue. You can use these when you customize the rule adornments.
- When using the operator -f, PSSharper now classifies the placeholders in the template string on the left side of the operator and provides tooltips for them.
- Added a new button to PSSharper Addon: “Fix Issue”. Button fixes the currently selected issue if an automatic fix is available. Else, button is grayed. Shortcut: doubleclick the issue directly in the PSSharper issue list.
- When there are fixable errors, a red light bulb shows in the margin. When there are errors with no automatic fix, a red circle icon is shown. Whenever there are syntax errors in a script, no other fixes are available until the underlying syntax error is fixed.
- PSSharper flagged environment variable assignments as “potentially never used variable”. Excluded all drive-qualified variables.
- Function reference overlay was not always refreshed. Fixed.
- In PowerShell 5, when there are self-defined Enums, PSSharper would not recognize them and report an unknown type when a self-defined enum was used. Fixed.
- When Add-Type added multiple types, PSSharper would only pick up the first type added. Fixed.
220.127.116.11 (released August 15, 2016)
- When adding a #requires statement (i.e. by pressing CTRL+ALT+R), required modules could list multiple times. Fixed.
18.104.22.168 (released August 14, 2016)
- PSSharper now highlights a number of additional keywords (capitalited) in comments: ISSUE:, BUG:, DEBUG:, TEST:, TODO:, DONE: and more.
- PSSharper did not work with PowerShell 3 and yielded no results. Fixed.
22.214.171.124 (released August 12, 2016)
- When you press F8, ISE by default executes the current selection, and when there is no selection, it auto-selects the current line. However, when the current line is part of a larger structure that spans across multiple lines, it cannot be executed and yields syntax errors. ISESteroids adds some extra logic: when you press F8 and there is no selected text, it checks whether the current line would produce a syntax error. If not, it uses default behavior and executes the current line. Else, it identifies the structure the caret is in, and selects it, then executes it.
One huge benefit of this is that you now can execute selected code in an existing try…catch block and add a more specific catch clause for this error.
- When you press F8 to execute only a portion of your code, and a runtime error occurs, PSSharper picks it up and offers to add an error handler. Previously, this was supported only for full script runs.
- Aligned the assignment operators in the error handler code inserted by PSSharper
- Get-PSSharperData now returns the GUID of each rule. Only the GUID will be a unique identifier for a rule. So when you create reports based on data submitted by Get-PSSharperData, use GUID to categorize or search for data.
- When adding a specific error handler to an existing try…catch structure, PSSharper just added the new catch block at the end. Catch blocks need to retain a certain order, though: specific catch blocks must occur before the generic catch block. Fixed.
- When a specific catch block already existed for a runtime error, PSSharper added another one. Fixed.
- When a runtime error occurs inside a catch block, PSSharper added the new catch block to the parent try structure. Fixed.
- PSSharper sometimes issued a “Check Type” warning for mismatching parameter types when really there was just a difference in verbosity, i.e. String vs. System.String. Fixed.
126.96.36.199 (released August 11, 2016)
- PSSharper Bar automatically uses a white text color on dark color themes. When a theme is changed, the text color changes immediately.
188.8.131.52 (released August 11, 2016)
- When adding an error handler via PSSharper, the error handler now uses [PSCustomObject] instead of New-Object + hashtable. Same result, shorter code. Thanks Jaap Brasser for your suggestion!
- [PSCustomObject] requires at least PowerShell 3. Added a rule to PSSharper. The rule can change [PSCustomObject] to PowerShell 2-compliant code, too.
- When pressing F8 with no code selected, ISESteroids could occasionally auto-selects the entire script. Fixed. Now, only the current line is selected, and if the current line is part of a larger structure and cannot run by itself, the closest possible structure is auto-selected.
- When (re)setting a PSSharper adornment to “Factory Default”, the setting was without effect. Fixed.
184.108.40.206 (released August 11, 2016)
- PSSharper rule “Parameter has no defined value” was changed to “Possible NULL parameter value” and made a manual fix (can only be applied to the particular issue, not all issues in a script). Add attribute [AllowNull()] to parameter if a null default value is acceptable, and PSSharper will then not mark it.
- When PSSharper marks an unknown .NET assembly, you may have to run your script code first to actually load external assemblies. Added a remark to the tooltip of this issue.
- PSSharper rule “Irregular parameter names” would trigger for certain commands and would not show a preview in the PSSharper addon. Fixed.
220.127.116.11 (released August 10, 2016)
- PSSharper reports compatibility issues when there is a class or enum structure in the code.
- Classes defined by a class structure are no longer reported as “missing .NET type”
- When there are cmdlet calls in your code and the module isn’t yet loaded, PSSharper may not report all possible issues. Fixed.
- When running the refactor addon tool, the #requires statement not always reported the correct requirements because the autofixer changed code, so PSSharper was not yet done analyzing the document when the #requires statement was inserted. Fixed.
18.104.22.168 (released August 9, 2016)
There will be extensive media coverage at www.powershellmagazine.com shortly, covering many of the new PSSharper features. Most of it is intuitively discoverable, too, while playing with the new version.
- Major new feature is “PSSharperV2”, a new real-time code analysis engine that allows for extensive customization. For example, you can choose to ignore rules, and determine their visual clues (type of squiggle, color of squiggle, type of text adornment). Since the new engine is actually “understanding” your code, it provides a multitude of refactoring options to make your code safer, faster, shorter, and/or more robust. We’ll cover this new feature in detail shortly.
- When you right-click a command, there is a new context menu item Auto-Correct Parameters. It will automatically add parameter names for positional arguments and autocorrect named parameters.
- Adjusted some of the code snippets to use the PowerShell 3+ syntax: “Mandatory” instead of “Mandatory=$true”, etc.
- Removed signatures from fixer scripts to save space.
- Obfuscator now has a new option to exclude all Parameters from obfuscation.
- PSSharper: undefined parameters from a parent scope will now be ghosted in child scopes.
- PSSharper: when parameters were defined outside a param() block (i.e. in parenthesis after the function name), PSSharper did not recognize them as parameters. Fixed.
- In Advanced Search (open it via Edit/Advanced Search), when files are blocked by Antivirus engines or permission denied exceptions occured, the search did not handle this gracefully. Changed. Blocked files will now appear in red and strikethrough, and the error message is displayed. Double-clicking blocked files will select them in Windows Explorer.
22.214.171.124 (released June 9, 2016)
- New Feature “PSSharper”: Unassigned variables as well as optional parameters with no default value are shown in a dimmed color to immediately catch your eye. When you assign values to reserved system variables like $host or $error, the variable appears striked through. Manage this feature through the new main menu item “PSSharper”.
- Hyperlinks and paths in comments and strings are underlined. Hold CTRL and click to follow link.
- The statement “TODO:” (in uppercase) – when found inside a comment – is marked with yellow background
- Obfuscation: Added new obfuscation scheme “Number” which simply numbers variables and functions. This can be used to reverse-engineer obfuscated scripts.
- Obfuscation: Added new option “Obfuscate Expandable String”
- WPF: When there is a WPF XAML string in your code, the code gets overlay commands to edit the XAML in a WPF designer tool (Kaxaml/VisualStudio), to add PowerShell code-behind, or to add event handlers.
- WPF: When you open the WPF event wizard, you can now select multiple events. The wizard now also has a checkbox “Filter Events”. When checked, only commonly used events appear in the list. When unchecked, all available events are displayed.
- WPF: Previously, when you opened a WPF window in the ISE (even without ISESteroids), calling ShowDialog() could occasionally crash the ISE. Fixed. The code generator now emits code that is always safe to run in the ISE (with or without ISESteroids)
- Main menu “Expert” renamed to “Features”. Contains functionality to enable and disable ISESteroids features.
- Moved settings for real-time analysis to new main menu “PSSharper”.
- When exporting a function to an existing module, the minor version is incremented but was always a two-digit version. Now, the existing version format is honored. If you use 3- or 4-digit version numbers, they are kept that way.
- When you right-click whitespace in ISE and in the context menu choose “WPF”, the context menu has just one entry: create sample WPF. This produces fully functional WPF code with all you need to get started. When you right-click the XAML that is produced this way (or any other XAML embedded in a literal string), you get the usual WPF editing commands. They now are also available via direct overlay commands at the top of a string containing XAML.
- Font Settings: ISESteroids lost customized font settings after a restart. Fixed.
- Obfuscation: typed variables were excluded from obfuscation. Fixed.
- Obfuscation: iteration variable in foreach loops was not obfuscated. Fixed.
- When you right-click an editor tab and choose “Compare to”, then select another file to compare to, the headers in WinMerge were swaped. Fixed.
- If there was a #requires statement in a script with a -Module (rather than -Modules) statement, ISESteroids added -Modules. This did not cause any issues but now, either -Module or -Modules are updated. When there are module dependencies, the required PowerShell version is also raised to 2.
- When ISE was launched without any open document, the editor tab context menu was missing for the first added file. Fixed.
Support and Feedback
ISESteroids is a trademark of Dr. Tobias Weltner