29 Sep 2014 @ 12:26 PM 

With PowerShell Desired State Configuration you’re able to install a package with the Package resource.
However, you’ll need to provide a package ID.
In the past I either created a snapshot of a VM, installed the application and dove in the registry to find the package id.
You could also install ORCA and use that to extract the package ID from the package.

Recently I noticed that PowerShell DSC has a nice little improvement which was introduced somewhere along the line.
When you try and install a package with a faulty package ID in your script, you’ll get an error back from PowerShell stating that
the package ID didn’t match the one found in the package… and stating the package id found inside the package!!!

So, copy-paste the package id from the error message into the DSC configuration and voilá… you’re set to go! :-)

Posted By: Jeff Wouters
Last Edit: 29 Sep 2014 @ 12:26 PM

EmailPermalinkComments (0)
Tags
Categories: DuPSUG, PowerShell, Windows

 24 Sep 2014 @ 12:01 PM 

Over the last few weeks I’ve been working with a vendor to improve the usability of their PowerShell module.

For vendors there is a tool which allows you to automatically create a PowerShell module :-)
This is some very cool stuff, but it takes over the name of properties as they are created in the classes.
So normally a manual review should be desired, at least the first time you generate your module.
They kinda forgot to do that :-)

I also looked at the module to apply some PowerShell Best Practices. For example, parameters should never be named after the plural.

How can you discover those? How can you find parameters named after the plural?

There is no property for that, so you would have to make some educated guesses.
In the English language, most plurals end with an ‘s’. Sometimes even two.
With that in mind, here is some code that allows you to find parameters that probably have been named after the plural :-)

$Modules = Get-Module -ListAvailable
foreach ($Module in $Modules) {
    $Commands = get-command -Module $Module.Name
    foreach ($Command in $Commands) {
        $Parameters = $Command.Parameters
        foreach ($Parameter in $Parameters) {
            $Parameter.Keys | foreach {
                switch ($Parameter.Values) {
                    {$_ -eq 'Verbose'} {break;}
                    {$_ -eq 'Debug'} {break;}
                    {$_ -eq 'ErrorAction'} {break;}
                    {$_ -eq 'WarningAction'} {break;}
                    {$_ -eq 'ErrorVariable'} {break;}
                    {$_ -eq 'WarningVariable'} {break;}
                    {$_ -eq 'OutVariable'} {break;}
                    {$_ -eq 'OutBuffer'} {break;}
                    {$_ -eq 'PipelineVariable'} {break;}
                    default {
                        if (($_ -notlike "*ss") -and ($_ -like "*s")) {        
                            [pscustomobject]@{
                                ModuleName = $Module.Name
                                CommandName = $Command.Name
                                ParameterName = $_
                            }
                        }
                    }
                }
            }
        }
    }
}
Posted By: Jeff Wouters
Last Edit: 24 Sep 2014 @ 12:01 PM

EmailPermalinkComments (0)
Tags
Categories: DuPSUG, PowerShell





 Last 50 Posts
 Back
Change Theme...
  • Users » 1
  • Posts/Pages » 331
  • Comments » 472
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight

About



    No Child Pages.

Contact



    No Child Pages.

Speaking



    No Child Pages.

Health Check



    No Child Pages.