Archive for the ‘ISE’ Category
In response to the comment about using IsePack
A recommendation for using PowerShellPack’s IsePack Copy-ColoredAsHtml has been made in the comment to my post. I’m not a big fan of this huge package, but this is worth testing for publishing.
I use the same code copy-pasted from an ISE tab:
cls
#region WordPress posting code test
#this is a test of Powershell code coloring
[string]$stringVar1 = "string 1";
[string]$private:stringVar2 = 'string 2';
[string]$script:stringVar3=
@'
string data
'@
[scriptblock]$global:sb = {{Write-Host scriptblock}.Invoke();};
function
write1{Write-Host $stringVar1;}
function private:write2
{param([string]$str2 = '')
Write-Host $str2;}
function script:write3
#this is a function
{
Write-Host $script:stringVar3;
}
function global:Print-SB
{
<#
.SYNOPSIS
This is a code coloring test.
.DESCRIPTION
This test function represents an advanced Powershell function syntax.
.PARAMETER Param
Demonstrates how a scriptblock can be passed as a reference.
.EXAMPLE
PS C:\> Print-SB ([ref]$sb)
#>
[CmdletBinding()]
param(
[Parameter(Position=0, Mandatory=$true)]
[ref]$Param
)
Begin{}
Process{$Param.Value.Invoke()}
End{}
}
write1
private:write2 $private:stringVar2;
script:write3
Print-SB ([ref]$global:sb)
#endregion WordPress posting code test
Below is the result of IsePack code preparation:
cls #region WordPress posting code test #this is a test of Powershell code coloring [string]$stringVar1 = "string 1"; [string]$private:stringVar2 = 'string 2'; [string]$script:stringVar3= @' string data '@ [scriptblock]$global:sb = {{Write-Host scriptblock}.Invoke();}; function write1{Write-Host $stringVar1;} function private:write2 {param([string]$str2 = '') Write-Host $str2;} function script:write3 #this is a function { Write-Host $script:stringVar3; } function global:Print-SB { Print-SB ([ref]$sb) #> [CmdletBinding()] param( [Parameter(Position=0, Mandatory=$true)] [ref]$Param ) Begin{} Process{$Param.Value.Invoke()} End{} } write1 private:write2 $private:stringVar2; script:write3 Print-SB ([ref]$global:sb) #endregion WordPress posting code test
This looks great and very similar to the hand-made colored code from my post. But who has stolen my advanced function’s comment?! 🙂 All the text between <# and C:\> inclusively erased as a cow licked out.
WordPress PowerShell Code Coloring Test
I have already written about how it’s possibly to post Powershell code here. As a year turned, why don’t check the state of affairs again?
My example is very simple and doesn’t cover all aspects of code. On the other hand, great sheets of code are not what is easily comparable with eyes.
1. This way my example is eyed in ISE:
Bugs are rare, however, it’s necessary to list them:
1.1 String data used without quotes is colored as a function (line 10)
1.2 Methods are not colored. It’s a typical trick, however, since nobody may know what it will be after the run of code. After having run the code, it’s considered here that no reason to re-color already colored code. (lines 10 and 42)
1.3 Property ‘Value’ is not colored (line 42).
Anyway, the coloring left the reader in a mood that all is healthy here.
2. Using Copy as HTML in PowerGUI 2.4 and Chrome 11, after adding manually line breaks (why doesn’t it type
s?), spaces and deleting trailing spaces after backticks (not in this sample), the following is workable:
cls #region WordPress posting code test #this is a test of Powershell code coloring [string]$stringVar1="string 1"; [string]$private:stringVar2='string 2'; [string]$script:stringVar3= @' string data '@ [scriptblock]$global:sb= {{Write-Hostscriptblock}.Invoke();}; function write1{Write-Host $stringVar1;} function private:write2 {param([string]$str2='')Write-Host $str2;} function script:write3 #this is a function { Write-Host$script:stringVar3; } function global:Print-SB { <# .SYNOPSIS This is a code coloring test. .DESCRIPTION This test function represents an advanced Powershell function syntax. .PARAMETER Param Demonstrates how a scriptblock can be passed as a reference. .EXAMPLE PS C:\> Print-SB ([ref]$sb) #> [CmdletBinding()] param( [Parameter(Position=0, Mandatory=$true)] [ref]$Param ) Begin{} Process{$Param.Value.Invoke()} End{} } write1 private:write2 $private:stringVar2; script:write3 Print-SB ([ref]$global:sb) #endregion WordPress posting code test
2.1 In the second code snippet we have numerous problems with names of functions, both where they are declared and where they are called.
2.2 Write-Host inside the second function
2.3 Such stuff like attributes in an advanced function.
To conclude this section, use the Copy as HTML option is a choice if manual editing doesn’t fatigue you.
3. WordPress provides a set of tags. Several parameters might do the life of a codeblogger simpler, especially 'highlight'.cls #region WordPress posting code test #this is a test of Powershell code coloring [string]$stringVar1 = "string 1"; [string]$private:stringVar2 = 'string 2'; [string]$script:stringVar3 = @' string data '@ [scriptblock]$global:sb = {{Write-Host scriptblock}.Invoke();}; function write1{Write-Host $stringVar1;} function private:write2 {param([string]$str2 = '')Write-Host $str2;} function script:write3 #this is a function { Write-Host $script:stringVar3; } function global:Print-SB { <# .SYNOPSIS This is a code coloring test. .DESCRIPTION This test function represents an advanced Powershell function syntax. .PARAMETER Param Demonstrates how a scriptblock can be passed as a reference. .EXAMPLE PS C:\> Print-SB ([ref]$sb) #> [CmdletBinding()] param( [Parameter(Position=0, Mandatory=$true)] [ref]$Param ) Begin{} Process{$Param.Value.Invoke()} End{} } write1 private:write2 $private:stringVar2; script:write3 Print-SB ([ref]$global:sb) #endregion WordPress posting code testHowever, the overall state is not appropriate, from my point of view. Yes, I know that the 'Frustration-Free' trademark is not WordPress's (as it is not Quest's too), but there is a room for improvement:
3.1 Variable names (lines 5, 6, 46, 48)
3.2 Function declarations and names (lines 11-13, 15, 21, 45-48)
3.3 A blob string (lines 7-9)
3.4 A specific to advanced functions comment-description (lines 23-35)
3.5 Types (lines 4-6, 10, 14)
3.6 Unquoted string (line 10)
I'll report these problems to Happiness engineers, maybe they share a bit of their happiness? 😉
An Infinitesimal Update To ObjectBrowser
Hi, today’s update is really small.
– added a progress bar during the collecting Current AppDomain and GAC. This should do the GAC loading slightly less painful.
– the ability to be run from command line powershell as well as from ISE is now restored. Please use the following instruction to import the module:
Import-Module Add-on.PSDevStudioLite.ObjectBrowser -Force
Other changes relate to internal code structure and not to be seen right now in the GUI. As usual, the download location is here:Â http://www.box.net/shared/ot56ct7ngl






