Monthly Archives: September 2014

PowerShell Summit Europe – Tuesday afternoon

Mike Pfeiffer kicked off the afternoon talking about DSC in the AWS cloud.  Using DSC to bootstrap new machines and configuration scripts to complete configuration. This works in push mode but pull servers being experimented with.

 

Second session was Jim Truher, a founder member of the PowerShell team, talking about Testing Frameworks.

Testing frameworks are essential.  Pester is a an excellent test framework for Test Driven Development. Pester is extensible as its a script module.

 

Our third session was Mike Marin speaking about PowerShell, devops and Windows Azure.

 

The final session was Lee Holmes - What Goes Bump in the Night? – looking at auditing to see what PowerShell is doing on your system

Security boundaries – once attackers get access to your machine its not your machine. Post exploitation.

Compromising administrators – means need just enough admin – don’t give unfettered access

Event forwarding great for detecting intrusions.

Forwarding occurs over WSMAN

Two days down and more good stuff to come

PowerShell Summit Europe 2015

No not a typo. We, at PowerShell.org, will be repeating the European Summit next year. Location hasn’t been finalised but will be Northern Europe.  The Summit will occur at about the same time of year.  Look to PowerShell.org later in the year for more information. We are hoping to be able to put on a larger event though that has yet to be confirmed.

 

Your support is critical to determining the size of the event, and ensuring the future of the event.

 

Look forward to seeing you next year

PowerShell Summit Europe – Tuesday morning

After a very successful DSC hackathon on Monday evening we reconvened on Tuesday morning with Steve Murawski delivering his second session on DSC.

A brief discussion on devops lead into looking at DSC configurations:

  • Configuration names can’t be hyphenated
  • Circular dependencies are detected
  • Partial named configurations allow multiple configurations working against same machine

The morning’s second session was me talking about creating cmdlets from the CIM StdRegProv class using a CDXML approach.  The talk started with using a single method and demonstrated how to add validation, simplify parameter input by the use of enumerations and how CDXML modules are used within PowerShell.

 

Dan Harman closed the morning session by talking about classes written in PowerShell – this functionality was introduced in the September preview of WMF 5

You can already define a class and load it with Add-Type but you have to write the class in C# or another .NET language. Now you can write the class in PowerShell

Classes can have overloaded constructors and methods.  All class members are public by default.

Enums are possible. Scoping is lexical not dynamic as in PowerShell

PowerShell Summit Europe 2014–Monday afternoon

 

Mike Pfeiffer started the Monday afternoon session with a demonstration of using PowerShell to manage Amazon Web Services.

 

Dan Harman, from the PowerShell team, followed with PowerShell Repositories Unleashed. Oneget is a software package manager

Oneget has PowerShell cmdlets; a C# API and a WMI provider may follow. Originally released against a Chocolately provider – others will follow.  Dan showed a nuget provider being installed

PowerShellGet is overlays OneGet and provides the ability t0 install and manage PowerShell modules

Package providers aren’t trusted by default. You can configure repositories to be trusetd – especially useful if you create your own

 

The third session of the afternoon was supplied by Tobias Weltner on Sophisticated Techniques of Plain Text Parsing.

PowerShell is based on text but often need to work with unstructured text data.  He started with using –split and lead into using regular expressions.

Can force into CSV format by supplying headers

Experience based learning enables more sophisticated processing

Select-string can also be used to parse textual data

 

The final Monday session was Do custom objects dream about ETS? by  Bartosz Bielawski

Bartek showed how to create custom objects and set its type.  Once you have that done you can create formatting and type data to control how the data is displayed.

PowerShell Summit Europe 2014–Monday morrning

The Summit started with a walk through the Monad Manifesto by Jeffrey Snover. This covered the history of PowerShell, where it came from, why it came about and the features introduced with the subsequent versions.

 

A few highlights:

  • DSC is a huge area and will expand
  • ISE will be able to edit files on remote machines
  • DSC resource kit now at wave 7 and more are in the pipeline
  • Classes can be created in PowerShell

The futures section included the intriguing possibility that eventually there may be an open source version of PowerShell.  Please note this is a possibility not a guarantee.

 

Second up was Steve Murawski talking about the creation of DSC resources ahead of our evening DSC resource hackathon.

Steve showed the structure of a resource and some of the gotchas such as versioning and the need to match parameter sets across the get/test/set-resource functions.

Infrastructure as code – ignore individual machines. Destroy & rebuild if there are problems

 

Final session of the morning was Jeff Wouters speaking on Speedy PowerShell

After explaining the pipeline Jeff started showed the impact of filtering on performance including how the new where and foreach syntax introduced in PowerShell v4 works.

He also covered how loops and workflows can impact performance

And the Summit begins

The PowerShell Summit Europe 2014 began unofficially this eveing with an informal gathering for drinks and converstation – no prizes for guessing the main topic of conversation!!

 

One of the greatest things about these Summits is the ability to talk to other people about what they are doing with PowerShell and to discover new ways to do things and new things to do with PowerShell.

 

The conversations continued over dinner and will no doubt continue through the next 3 days.  

PowerShell Summit Europe 2014 – final agenda

The final agenda for the PowerShell Summit is available at http://eventmgr.azurewebsites.net/event/home/PSEU14

 

Circumstances beyond the control of PowerShell.org have meant we’ve had to make a few changes to the agenda from that previously published

WMI and CIM dates

A question on the forum asked about extracting the year from the ReleaseDate property returned by Win32_BIOS

 

They were trying to do this

Get-CimInstance Win32_BIOS | Select-Object @{n="ReleaseDate";e={$_.ConvertToDateTime($_.ReleaseDate).year()}}

 

There are 2 problems with this approach – firstly the objects that Get-CimInstance produces don’t have the ConvertToDateTime method (its added by PowerShell to the objects produces by Get-WmiObject) and secondly on a DateTime object Year is a property not a method.

 

If you use the WMI cmdlet you see this

£> Get-WmiObject -Class Win32_Bios | select Releasedate

Releasedate
-----------
20140512000000.000000+000

 

The date is in WMI format and needs to be converted.

£> Get-WmiObject Win32_BIOS | Select-Object @{n="ReleaseDate";e={$_.ConvertToDateTime($_.ReleaseDate)}}

ReleaseDate
-----------
12/05/2014 01:00:00

 

If you want just the year

£> Get-WmiObject Win32_BIOS | Select-Object @{n="ReleaseDate";e={($_.ConvertToDateTime($_.ReleaseDate)).Year}}

ReleaseDate
-----------
       2014

 

This conversion is already done for you with the CIM cmdlets

£> Get-CimInstance -CimSession $c -ClassName Win32_Bios | select ReleaseDate

ReleaseDate
-----------
12/05/2014 01:00:00

 

Again if you just want the year

£> ((Get-CimInstance -CimSession $c -ClassName Win32_Bios).ReleaseDate).Year
2014

Creating a DHCP reservation

For my demo at the PowerShell Summit I wanted to use DHCP for the Linux machine but guarantee that it had a specific IP address.  Time to create a DHCP reservation

 

The DHCP module in Windows Server 2012 and 2012 R2 enables you to create a reservation:

Add-DhcpServerv4Reservation -ScopeId 10.10.54.0 -IPAddress 10.10.54.2 -ClientId 00155D36C906 -Description "LInux machine" -Name "SphinxLX01"

 

The clientid is the VMs MAC address.

 

You can view the current reservations:

 

£> Get-DhcpServerv4Reservation -ScopeId 10.10.54.0 | fl *


IPAddress             : 10.10.54.2
ScopeId               : 10.10.54.0
AddressState          : ActiveReservation
ClientId              : 00-15-5d-36-c9-06
Description           : LInux machine
Name                  : SphinxLX01
Type                  : Both

 

You can view current leases:

£> Get-DhcpServerv4Lease -ScopeId 10.10.54.0 | fl *


IPAddress             : 10.10.54.2
ScopeId               : 10.10.54.0
AddressState          : ActiveReservation
ClientId              : 00-15-5d-36-c9-06
ClientType            : Dhcp
Description           : LInux machine
DnsRegistration       : NotApplicable
DnsRR                 : NoRegistration
HostName              : SphinxLX01
LeaseExpiryTime       :
NapCapable            : False
NapStatus             : FullAccess
PolicyName            :
ProbationEnds         :
ServerIP              : 10.10.54.201

 

And all from the comfort of your very own PowerShell prompt

Getting the most from your PowerShell Summit

With the first European PowerShell Summit rapidly approaching – 11 days and counting – I thought I’d give you a few ideas on how to get the maximum out of the Summit.

First – ask questions – lots of questions.  The speakers are masters of their topics and if you need to drill deeper to understand something talk to them in the breaks or over lunch. At Summits in North America we’ve had discussions go on well into the early morning!

 

Don’t try and copy code that you see.  The demo code and slides will be available after the Summit.

 

All of the sessions are recorded so you will have a chance to replay bits you need to see again. Some of the speakers will cram a lot into the sessions so accessing the recordings will be useful

 

Talk to your fellow attendees – I seen discussions where one persons problem was solved by another attendee who’d gone through the same issues

 

Make suggestions for topics you’d like covered at future Summits – if we get enough demand for a topic we’ll find a speaker

 

Representatives of the PowerShell will be present, and speaking. Talk to them. Tell them what you like. More importantly tell them what you don’t like or what isn’t working for you.  They love feed back from real users.

 

A number of PowerShell MVPs will be speaking or in the audience. This is your opportunity to talk to them and  ask your difficult questions. They are recognised experts and will be more than willing to help.

 

Lastly – ask questions. Lots of questions. If you can’t get your questions answered at a PowerShell Summit – there is a serious problem.