Finding VIBs on ESXi hosts with PowerCLI

I did not work with PowerCli for the last couple of months and I had an interesting question from one of my follower Ivo from Netherlands.

He was trying to retrieve the VIB information with the name 'net-e1000e' from all his VMware Hosts using the PowerShell and the Snapin PowerCli from VMware.

What is a VIB ?
VIB stands for vSphere Installation Bundle.  At a conceptual level a VIB is somewhat similar to a tarball or ZIP archive in that it is a collection of files packaged into a single archive to facilitate distribution

Here is the piece of code to retrieve this information.
The output is sent to Out-GridView which create a simple GUI.

Get-VMHost | Where-Object { $_.ConnectionState -eqConnected” } | Foreach-Object {
    $CurrentVMhost = $_
        # Exposes the ESX CLI functionality of the current host
        $ESXCLI = Get-EsxCli -VMHost $CurrentVMhost.name
        # Retrieve Vib with name 'net-e1000e'
        $ESXCLI.software.vib.list() | Where-Object { $_.Name -eq "net-e1000e" } |
            $VIB = $_
            $Prop = [ordered]@{
                'VMhost' = $CurrentVMhost.Name
                'ID' = $VIB.ID
                'Name' = $VIB.Name
                'Vendor' = $VIB.Vendor
                'Version' = $VIB.Version
                'Status' = $VIB.Status
                'ReleaseDate' = $VIB.ReleaseDate
                'InstallDate' = $VIB.InstallDate
                'AcceptanceLevel' = $VIB.AcceptanceLevel
            # Output Current Object
            New-Object PSobject -Property $Prop
        Write-Warning -Message "Something wrong happened with $($CurrentVMhost.name)"
        Write-Warning -Message $Error[0].Exception.Message
} | Out-GridView

Script Version

I also wrote a more complete version available on Github

Thanks for reading! If you have any questions, leave a comment or send me an email at [email protected] I invite you to follow me on Twitter @lazywinadm / Google+ / LinkedIn. You can also follow the LazyWinAdmin Blog on Facebook Page and Google+ Page.


PowerShell - Who Reports to Whom? (Active Directory recursive DirectReports)

I've been working in the video games industry for a bit more than 3 months now. A lot is going on, and the pace seems faster than regular corporation environment. I also notice a lot of employees movements between teams and projects.

Last week I had an interesting "Quest": To find the list of employees under a specific manager. In Active Directory you can retrieve this information under the property DirectReports.

However if this manager manage other managers... how can I do a recursive search... ?
Sounds like a mission for PowerShell :-)


PowerShell GUI - LazyTS (Terminal Services Management)

LazyTS is a PowerShell script to manage Sessions and Processes on local or remote machines. It allows you to Query/Disconnect/Stop session(s), Query/Stop process(es) and Send Interactive message to one or more sessions.

This tool is using the module PSTerminalService which relies on the Cassia .NET Library.I used Sapien PowerShell Studio 2014 to which make life easier if you want to start building WinForms tools and add PowerShell code.


PowerShell - Check the GPO Replication accross your domain

A couple of days ago we had to troubleshoot some SYSVOL replication issues throughout the domain. I wanted to check the version of the GPO that was modified recently and make sure it was replicated on all the Domain Controllers.

I created a small function called Get-ADGPOReplication to easily compare the versions of each Group Policy Objects (User and Computer Configurations) on each Domain Controllers in the Domain.

Get-ADGPOReplication sent to Out-Gridview


PowerShell Tip - Escape Regex MetaCharacters

Last week I worked on a Scorch PowerShell script that is looking for duplicate Incident Requests inside SCSM by checking new incoming request and existing ticket already in the system.

One of the script step is to look for a match between two strings, something similar to the following:

$String1 = "Title:[PowerShell Rocks!]"
$String2 = "Title:[PowerShell Rocks!]"

$String1 -match $String2

Straight forward you would think! And at first I was surprised to see the result $FALSE ... yep...to "ass-u-me"...


PowerShell - NetBackupPS: Module for Symantec NetBackup

In my previous job, we used Symantec NetBackup to handle backups and restores. To handle some of the reporting, the storage admins were using the Symantec CLI tools (bunch of Exe).
Example of usages: Find the scratch tapes in a particular robot... or in a particular site...

I wanted to parse the output and be able to reuse the information for other commands or to report information to the team. I realised that could be a good exercice to improve my parsing skills using PowerShell and decided to work on some more cmdlets and eventually a module.


PowerShell/SCSM - Finding the GUID of an object

Retrieving the GUID of an object in SCSM using PowerShell is sometime a bit challenging. For the WorkItems, this piece of information is not present in any Property available, you have to invoke the get_id method to retrieve it.

There is an 'ID' property which is misleading, it contains the number of the request, for example IR123456.

And for some other type of objects, such as the DomainUser or Enumeration objects the GUID is the..... ID property.


PowerShell/SCSM - Install and Config the SMlets Module

If you follow my blog, you might have noticed that I recently started to post about SCSM. We just finished to migrate to a new SCSM environment in Azure (Iaas) while using Cireson Portal as a front end.

Of course of lot of the automation part is handled by SCORCH in the background which rely on a lot of PowerShell :-)  (We don't use SMA yet, but I will soon look into it)

Anyway I just wanted to post a quick article on how to configure SMlets on a workstation to be able to query SCSM.


PowerShell - ConvertFrom-String and the TemplateFile parameter

I'm continuing to play with the new ConvertFrom-String cmdlet (available in the last WMF 5.0 September preview released yesterday) which make the parsing job really easy for simple or complex output.

This cmdlets supports two types of modes: Basic Delimited Parsing (See yesterday's post) and the Auto-Generated Example-Driven Parsing which I will cover in this post.

This Auto-Generated Example-Driven Parsing mode is based on the FlashExtract research work in Microsoft Research...

Important: This post is based on the September 2014 preview release of WMF 5.0. This is pre-release software, so this information may change.


PowerShell - Playing with the new ConvertFrom-String cmdlet

In a previous post I talked about parsing NetStat.exe using PowerShell and some regex, It is a fun exercice but require some knowledge to figure out how the parsing should happen.

Today, It got way easier !! The PowerShell Team just released a new version of the WMF : v5 September preview ! And One of the coolest feature is the new ConvertFrom-String cmdlet.

EDIT (2014/10/02): See also my post about using ConvertFrom-String and the param -TemplateFile against Netstat.exe

Using the same example from my previous post, I will perform a simple parsing of netstat.exe -n and send the output to ConvertFrom-String.

Important: This post is based on the September 2014 preview release of WMF 5.0. This is pre-release software, so this information may change.


PowerShell - WMF 5.0 July preview uninstallation fails

Today the PowerShell Team released a new version of the WMF : v5 September preview, I really like the faster beta cycle !

Having the beta preview already installed (July version), I first open Add/Remove Programs (appwiz.cpl) and start to uninstall this version (KB2969050).

Once the uninstallation is completed, Windows ask to reboot. However at the next boot I get a message saying the Update did not work and Windows is Undoing the change, reverting to the previous state...then reboot again.


PowerShell - Sum similar entries from multiple CSV files

One of my script is scheduled to download everyday the proxy logs files from multiple proxies (Approx 1>2GB per file) of the previous day. The second step is to parse each of them and get the top 200 domain names within a specific environment. Finally at the end of the month another script create a report on the monthly internet usage.

I thought this was an interesting exercise even if some tools would probably do a better job ($$$). Also we shouldn't take those results too seriously since some protocols like Ajax or HTML5 talk a lot to the servers, keep refreshing pages even if you are not actively working on them.

In this post, I will talk about the last part of this process and how I combine all those files to get a real monthly top domains.


PowerShell/SCSM - Retrieving Active Directory Object Classes

Following my previous post, today I continue my SCSM journey. I had to create a new automation workflow using SCSM and SCORCH to give the ability to a portal user to add an Active Directory Account to one or more group(s).

Once you get the input of the user, the selected user account and groups impacted by the request are added to the Service Request Related Item, in the Configuration Item field.

Finding this information with PowerShell was not easy. Also Users and Groups are tagged as "User Class" and we want to avoid querying the Active Directory to verify is a user is really a user and a group... really a group object.


PowerShell/SCSM - My first steps

I recently started to work with System Center Service Manager 2012 R2 (also known as SCSM) which provides provides an integrated platform for automating and adapting an organization's IT service management best practices, such as those found in Microsoft Operations Framework (MOF) and Information Technology Infrastructure Library (ITIL). It provides built-in processes for incident and problem resolution, change control, and asset lifecycle management.


PowerShell - Parse this: NetStat.exe

In the last couple of months I had to parse different types of output using PowerShell and I thought it would be a cool idea to explain how this can be done. Command line tool: Netstat.exe

This small tool allows you to display active TCP connections, ports on which the computer is listening, Ethernet statistics, the IP routing table, IPv4 and IPv6 statistics.

In this example I will use the parameter '-n' which displays active TCP connections (without name resolution).


PowerShell Summit 2014 Europe (English)

French version

The European PowerShell Summit, organised by PowerShell.org guys, will be in Amsterdam from the September 29th to the October 1st 2014 at the Park Hotel. Details at http://powershell.org/wp/community-events/summit/

The Summit will feature 3 days of PowerShell sessions from PowerShell team members, PowerShell MVPs and other PowerShell experts. It’s the in-person gathering place for PowerShell enthusiasts and PowerShell users. It’s a place to make new connections, learn new techniques, and offer something to your peers and colleagues.  If you can't get your PowerShell questions answered at the PowerShell Summit you'll never get an answer.

PowerShell Summit 2014 Europe (Français/French)

English version.

La conférence PowerShell Summit Europe organisera sa première édition du 29 septembre au 1er octobre 2014.
Trois jours de sessions PowerShell par les membres de l'équipe PowerShell, MVPs et d'autres experts PowerShell.

C'est le lieu de rassemblement pour des tous enthousiastes et utilisateurs PowerShell ; l'endroit pour faire de nouvelles connexions, apprendre de nouvelles techniques et offrir quelque chose à vos pairs et collègues.

Pour avoir participé aux deux premières Éditions Nord Amérique en avril 2013 et avril 2014 à Seattle, si vous voulez développer vos connaissances et découvrir comment d'autres professionnel TI utilisent PowerShell dans leur environement... c'est la conférence de prédilection auxquel vous devez assister!!!!


PowerShell - Handy function to connect to Office365 services

I just started to play with a Microsoft Office 365 environment (Azure Active Directory, Lync Online and Exchange Online) and I thought I would make it through PowerShell obviously :-)

But when you start your PowerShell console... you need to load modules, connect to each services, enter your credentials...yada yada yada...

With Office 365 you can administer the following services using PowerShell:
  • Azure Active Directory
  • Exchange Online PowerShell
  • SharePoint Online PowerShell
  • Lync Online PowerShell


New-Job -Company WB -Role SysAdmin

Next week I will be starting a new job at Warner Brothers Gaming studio in Montreal as a Senior Microsoft System Administrator.

It is with mixed emotions that I'm leaving my current employer Domtar where I spend the last five years. In 2009 I started as a Windows System Administrator to support Windows Servers and VMware Systems. I then changed position in 2013 to become a Core Infrastructure Administrator where my role was mostly focused on VMware Systems and Automation (using mostly PowerShell).

I would like to take this opportunity to express my sincere appreciation to my friends and colleagues at Domtar, I have learned a great deal from you and will miss your company.

Thanks for reading! If you have any questions, leave a comment or send me an email at [email protected] I invite you to follow me on Twitter @lazywinadm / Google+ / LinkedIn. You can also follow the LazyWinAdmin Blog on Facebook Page and Google+ Page.


PowerShell Summit 2014 NA - Day 3

The PowerShell Summit 2014 NA is now over ! The organizers really did an awesome work !! I can't wait for next year!! In 2015 the event will be hosted in Charlotte, NC around the same time.

PshSummit 2014 NA serie posts:
PowerShell Summit 2014 NA - Day 1
PowerShell Summit 2014 NA - Iron Scripter Competition
PowerShell Summit 2014 NA - Day 2
PowerShell Summit 2014 NA - Day 3 (current post)

Anyway, here is my small Day 3 retrospective:


PowerShell Summit 2014 NA - Day 2

Another day of PowerShell Awesomeness !!!  Learned a ton of things today !! Made some new PowerShell friends ANDDD met so many PowerShell Team members!! Nana, John Slack, Bruce,...etc... and Diane Dubois a new member from France! It was a great surprise! Awesome! I was really not expecting to speak French at the summit ;-)

Note: The names of the PowerShell Team members might not be correct, sorry about that (please correct me!)

PshSummit 2014 NA serie posts:
PowerShell Summit 2014 NA - Day 1
PowerShell Summit 2014 NA - Iron Scripter Competition
PowerShell Summit 2014 NA - Day 2 (current post)
PowerShell Summit 2014 NA - Day 3


PowerShell Summit 2014 NA - Iron Scripter scenario

Monday evening, the PowerShell Summit 2014 NA organized an Iron Scripter competition. The goal was to fix/create 3 scripts and to get them rated by 3 juges. We had 45 minutes to complete everything, including time for the juges to score the scripts.

PshSummit 2014 NA serie posts:
PowerShell Summit 2014 NA - Day 1
PowerShell Summit 2014 NA - Iron Scripter Competition (current post)
PowerShell Summit 2014 NA - Day 2
PowerShell Summit 2014 NA - Day 3

PowerShell Summit 2014 NA - Day 1

The PowerShell Summit 2014 North America kicked off this morning ! What a day! The organizers really did an Awesome Work!! Great Summit so far! This event is a great opportunity to meet old friends, make some new ones and put faces on names.

I also took this opportunity to bring a couple of PowerShell books, and get them signed by authors (a lot of them are at the summit).

For me it was kind of a long day, I am still jet lagged and couldn't sleep anymore when I woke up at 5am. After a 30 min run and a small breakfast I was on my way to the Summit.


PowerShell - Playing with the new OneGet module (v5 preview)

One very cool thing in the last Windows Management Framework V5 Preview release is the new module OneGet which allow us to manage a list of software repositories, search/acquire/install/uninstall package(s).

This has been present in the Linux world for a very long time, for example with APT-GET (Debian). This new feature is basically a global silent installer for applications and tools. We should also be able to do configuration tasks and anything that you can do with PowerShell. The power you hold with a module like OneGet is only limited by your imagination! :-)

Note that this is a preview, there is no documentation yet, the features and behavior are likely to change before the final release.

OneGet Module ?

OneGet is a new way to discover and install software packages from around the web. With OneGet, you can:
  • Manage a list of software repositories in which packages can be searched, acquired, and installed
  • Search and filter your repositories to find the packages you need
  • Seamlessly install and uninstall packages from one or more repositories with a single PowerShell command


PowerShell - PowerShell v5 "Preview" available

Wow that was really fast!! In case you missed it last week, PowerShell 5.0 "Preview" has been released by Microsoft part of Windows Management Framework 5.0 (WMF 5.0) Preview. The release of the version 4 was not so long ago (October 2013), Microsoft is definitely increasing the pace of releases.

Download WMF v5 here.

What's New?

This preview release brings the following update/features:
  • Update of PowerShell Desired State Configuration: performance improvements + bug fixes,
  • Module OneGet to manage lists of software repositories, search/acquire/install/uninstall packages 
  • Module NetworkSwitch. to manage Windows network switches

In my opinion, the coolest feature is the module OneGet which allows you manage/install/uninstall packages,  (Linux world has something similar called Apt-Get for a very long time). I think this is a very good news and it will had more flexibility to the sysadmin work.

Once installed,  $PSVersionTable will report the following result :-)  PSVersion: 5.0.9701.0

Upgraded :-)


PowerShell - Get a list of my domain Organizational Units

Quick post, last week my coworker Andrey needed to list all the Organization Units in the domain by Canonical Name. I thought sharing the PowerShell One-Liner magic could save time to some people out there.

In the following examples two methods to retrieve the information using Active Directory and ADSI/NET.

Active Directory Module

I found two ways to get this information using this module
  • Get-ADOrganizationUnit
  • Get-ADObject

First we need to verify if the module is loaded and then search for Cmdlet that could meet our needs.
# Check if the ActiveDirectory module is Loaded
Get-Module -Name ActiveDirevtory

# Check if the ActiveDirectory module is available
Get-Module -Name ActiveDirectory -ListAvailable

# Import the ActiveDirectory module
Import-Module -Name ActiveDirectory

# Find Cmdlets in the ActiveDirectory related to OrganizationalUnit
Get-Command -Module ActiveDirectory -Name *OrganizationalUnit*


PowerShell - Get/Set the Network Level Authentication Remotely (RDP Setting)

A few days ago I was in a training class out of the office with one of my work colleague. During the class he tried to connect to work using our Citrix (SRA) portal when he realized that his computer at work (freshly re-installed with Windows 8.1) was not allowing him to connect because of the Network Level Authentication.

Error message: "The remote computer that you are trying to connect to requires Network Level Authentication (NLA), but your Windows domain controller cannot be contacted to perform NLA. If you are an administrator on the remote computer, you can disable NLA by using the options on the Remote tab of the System Properties dialog box."

Before I talk about the workaround and the PowerShell script we used to fix that, let's investigate in order to understand the problem.


PowerShell - Find Inactive Computers in Active Directory with ADSI

Today I wanted to retrieve inactive computer accounts in the Active Directory without using the Quest Active Directory Snapin or the Active Directory Module. Yes... It happens that you work on a computer that don't have those tools once in a while, and I thought It would be fun to have a script without requirements...

Note: BTW, the following solution might not be the best or most efficient, so let me know if you know a faster/easier way to do this, I'm willing to learn more about querying AD.

Here are the key element of the script, I want:
  • Computer Inactive for >=90 days
  • Be able to specify a SearchRoot
  • Filter on the Operating System if possible (I want only Windows Servers, without the Domain controllers for example)
  • Return SamAccountName, Name, DN, Operating System, and Description
  • Limit the number of object to return (can be useful for large environment)

PowerShell - Read an Excel file using COM Interface

Last week, I worked on a small PowerShell script to read a custom excel file sheet with a lot of information in different columns and rows. Unfortunately, you'll have to adapt the script to your needs. However I thought this might be helpful to understand how this work.

Here is the sample Excel file I worked with:


PowerShell Studio 2014 from Sapien released!

SAPIEN released a new version of their awesome tool PowerShell Studio a few days ago: SAPIEN PowerShell Studio 2014.

PowerShell Studio is a Toolmaking Environment, a PowerShell Integrated Scripting Environment (ISE) tool that let you edit and debug scripts, create package, installer, executable and deployments. Also, the Enhanced Form Designer makes GUI design fast and easy, eliminating the need to manually write hundreds of lines of code.

This is for me one of the best tool on the market when you need to create PowerShell Scripts/advanced functions and Graphical User Interface.

The tool is listed at 389$ USD which comes with a one year subscription. Once this subscription expire you'll have to renew it in order to continue receiving new updates/features, otherwise you can continue using the tool without updates. Check out the following blog article for more details: Starting with the 2014 versions all SAPIEN software sold with subscription

In the following post I will talk about the changes I noticed in the PowerShell Studio 2014 compared to PowerShell Studio 2012. I listed the "What's new" items based on what I discovered so far, Some information might be inaccurate since I don't have any documentation yet.

I did not get a chance to play with package, installer and deployment options, so this will be covered in another blogpost.


PowerShell Summit North America 2014

In approximately 1 month I will be attending the PowerShell Summit 2014 North America. This is the second edition of this event organized by the PowerShell.org team, It will be held April 28, 29, and 30 at the Meydenbauer Center on Northeast 6th Street in Bellevue, WA.

Note: If you are interested, I previously blog about the 2013 event with some pictures, cost and other details.

Bellevue, WA, United States

The agenda of the summit is out: Session Abstracts and Attendee Information
A lot of great speakers, huge content, It will be hard to decide which sessions I want to attend, but I think I will definitely check those on Desired State Configuration (DSC) which I did touch yet... *~*
It should be great occasions to talk and to meet new/old PowerShellers friends.

If you are attending, don't hesitate to come talk to me, my picture is in the top right corner of my blog ;-)
Also, if my plane is on time (or not stuck at the custom) I should be able to attend the Pre-Mixer event on Sunday night at Blue Martini.

Thanks for reading! If you have any questions, leave a comment or send me an email at [email protected] I invite you to follow me on Twitter @lazywinadm / Google+ / LinkedIn. You can also follow the LazyWinAdmin Blog on Facebook Page and Google+ Page.


PowerShell Summit North America 2013

In April 2013 I was one of the lucky attendees at the first PowerShell Summit in North America. The event was organized by the PowerShell.org team and was held in Redmond, WA between the 22nd and 25th of April 2013.

I thought sharing some details and pictures would be nice :-)

Note: Just realized that this blog post stayed in my draft since last year ! Sorry for the late post ;-)

Seattle, WA


PowerShell Tip - Adding Help in the PARAM statement

It’s always a good idea to include help within your functions ! You never know who might benefit from it.

With PowerShell adding help to your script, function and module is a really easy thing to do.

Help in the PARAM statements

A very cool way to add some help to your script parameters is to add comments within the PARAM statement block. With this method you do not need to write a .PARAMETER directive for each paremeters. However you are required to write at least one directive in the Comment Based Help block (.SYNOPSIS or .DESCRIPTION) to be able to use it.


        This function will get some cool stuff
        # Specifies the computer name
        # Specifies the Log directory Path
        $Logs = C:\lazywinadmin\logs

Then use Get-Help against your function/script

Get-Help Get-Something -Parameter *

This command will only return the Parameters information with the help we added in the PARAM statement

    Specifies the ComputerName

    Required?                    true
    Position?                    named
    Default value
    Accept pipeline input?       false
    Accept wildcard characters?  false

    Specifies the Log directory Path

    Required?                    false
    Position?                    named
    Default value                c:\lazywinadmin\logs
    Accept pipeline input?       false
    Accept wildcard characters?  false

Even if this tip is pretty cool, I would still recommend to use the Comment Based Help block to have a centralized place to put all the help !

Thanks for reading! If you have any questions, leave a comment or send me an email at [email protected] I invite you to follow me on Twitter @lazywinadm / Google+ / LinkedIn. You can also follow the LazyWinAdmin Blog on Facebook Page and Google+ Page.


PowerShell ISE Tip - Navigate between curly brackets

While playing with PowerShell ISE today, I just found out about this little nice trick to navigate between brackets !!! I did not know about this! Pretty cool stuff ! :-)

By positioning your cursor on one of the brackets, you can navigate to its opening/closing one by pressing CTRL +  ]

Update: Looks like you can actually do the same thing with SAPIEN PowerShell Studio 2012

Update#2: The matching actually works for anything the ISE recognizes as a matched pair, for example, () and [] in addition to {}. Unfortunately matching doesn't seem to work inside herestrings and other comments. (Thanks Greg Wojan)

PowerShell ISE - Navigate between brackets using CTRL + }

That's just Awesome !!! :-)

Here is an example using SAPIEN PowerShell Studio 2012

Thanks for reading! If you have any questions, leave a comment or send me an email at [email protected] I invite you to follow me on Twitter @lazywinadm / Google+ / LinkedIn. You can also follow the LazyWinAdmin Blog on Facebook Page and Google+ Page.


Winter Scripting Games 2014

Get Ready! The Winter Scripting Games 2014 are starting very soon !! The Event 1 is scheduled to start this week-end (Jan 19th 2014)! The Games are an amazing opportunity to learn more about PowerShell. This is the kind of thing you don't want to miss !!! 

Last year I jumped in for the first time in the 2013 edition and this was really a lot of fun !!! It gave me a huge boost to my PowerShell Skills and so much more confidence in my scripting style !!! You can refer to my old blog posts for each Scripting Games 2013 events were I tried to analyze each of my solutions.

Back at the beginning of December I was actually offered by +Mike Robbins to Coach the teams, but since I had so much fun playing at the last games I decided to play again this year, couldn't resist!!

For the 2014 Edition however, the formula of the Scripting Games is a bit different:
  • Teams: This edition of the Scripting Games is a team work event ! No more Solo mode, participants have to create or join a team (from 2 to a maximum of 6 team members),
  • Coaches: A list of experts will give advices/critics on the posted script via comments or blog posts.
  • Judges: A team of MVPs and Well-known PowerShell Guru will scores each of the scripts.


PowerShell MVP award

Here a quick post to show you the awesome MVP Welcome Kit I received ! :-)

Thanks for reading! If you have any questions, leave a comment or send me an email at [email protected] I invite you to follow me on Twitter @lazywinadm / Google+ / LinkedIn. You can also follow the LazyWinAdmin Blog on Facebook Page and Google+ Page.


I'm a PowerShell Hero ! Thank you guys !

Wow ! What a year so far... I'm one of the five persons who received the first-ever PowerShell Heroes recognition on PowerShell.org.

"The idea was to offer a kudos to folks who have been working hard in the PowerShell community, but who haven’t received other formal recognition (like Microsoft’s MVP Award)."

First, I was really surprised to receive this recognition ! I recently got my first MVP award on the 1st of January 2014 and I immediately contacted +Don Jones to let him know there was a conflict. However he said this was related to my work done in the past year(s) and they decided to recognize me anyway.

Second, I want to say THANK YOU for those who recommended me. I am very humbled and honored that my contributions to this community are helpful to some people out there ! So again THANK YOU!!! MERCI!!!


Microsoft MVP 2014 for PowerShell !

What an amazing way to start the year !!! It is a great pleasure and honor to announce that on the 1st of January I was awarded the Microsoft Most Valuable Professional (MVP) Award for outstanding contributions in Windows PowerShell.

Dear Francois-Xavier Cat, 
Congratulations! We are pleased to present you with the 2014 Microsoft® MVP Award! This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in PowerShell technical communities during the past year.
I would like to take this opportunity to thank especially Vivian for her support and motivation, Simran and Joel from Microsoft Canada (who first contacted me back in September), Andrey from Domtar and Jean-Philippe from Akilon.

I was able to get to this point today thanks to the great content created by the PowerShell Community.
Just to name a  few people I follow: Ed Wilson (The Scripting Guy), +Ravikanth Chaganti , +Boe Prox , +Jeffery Hicks , +Aleksandar Nikolic , +Lee Holmes , +Brandon Shell , +Don Jones , ...

Here is my Microsoft MVP Profile: http://mvp.microsoft.com/en-us/mvp/Francois-Xavier%20Cat-5000475

Thanks for reading! If you have any questions, leave a comment or send me an email at [email protected] I invite you to follow me on Twitter @lazywinadm / Google+ / LinkedIn. You can also follow the LazyWinAdmin Blog on Facebook Page and Google+ Page