2 minute read

Last year, Emin Atac and I released a PowerShell module to interact with the Microsoft MVP website, see: MVP Module.

If you are a Microsoft MVP, this module gives you quick and easy way to retrieve your entries and update your contributions.

Installing the module

The module can easily be installed from the PowerShell Gallery using the following command:

Install-module -name MVP

The first time you use the module you’ll need to complete some requirements and configure your connection, see the MVP module github page for more details.

Loading and configuring the module

After installation (and first time use requirements completed), we’ll need to load the module and authenticate against the Microsoft MVP Api

# Import the module
Import-Module -Name MVP

# Set your connection to the MVP API
$SubscriptionKey = '<Your Private Key>'
Set-MVPConfiguration -SubscriptionKey $SubscriptionKey
# This will show a Window to authenticate against Microsoft MVP API

We are now all set to use the module.

Retrieving your contributions

Retrieving all your entries can be done using Get-MVPContribution function. By default the function retrieve the last 5 entries, here is an example of output:

Get-MVPContribution
ContributionId         : 683377
ContributionTypeName   : Open Source Project(s)
ContributionType       : @{Id=414bcf30-e889-e511-8110-c4346bac0abc; Name=Open Source Project(s); 
                         EnglishName=Open Source Project(s)}
ContributionTechnology : @{Id=7cc301bb-189a-e411-93f2-9cb65495d3c4; Name=PowerShell; AwardName=; 
                         AwardCategory=}
StartDate              : 2017-02-01T08:00:00
Title                  : MVP Module
ReferenceUrl           : https://github.com/PowerShellLab/MVP
Visibility             : @{Id=100000000; Description=Microsoft; LocalizeKey=MicrosoftVisibilityText}
AnnualQuantity         : 1
SecondAnnualQuantity   : 0
AnnualReach            : 2
Description            : test

Retrieving multiple contributions

You can specify how many entries you want to retrieve using the -Limit parameter. Unfortunately at the moment there is no way to retrieve all the entries using something like -Limit 0, you need to specify a high number, example:

Get-MVPContribution -limit 1000

Backing up your contributions

Now that we have the data, we can send it to a file.

Simple backup

As an example we retrieve the last 1000 entries, convert them to a json format and save it to a file with the format BackupMVP_<yyyyMMdd_HHmmss>.json

# Retrieve 1000 contributions
Get-MVPContribution -limit 1000 |
# Convert to JSON format
ConvertTo-Json |
# Send the output to a file
Out-File -FilePath BackupMVP_$(Get-Date -format 'yyyyMMdd_HHmmss').json

This generated a file called BackupMVP_20180122_214015.json.

Backup per year

If you want to save your contributions into different files, for example per year, you can do something like this:

# Retrieve the last 1000 contributions
Get-MVPContribution -limit 1000 |
# Add a property 'Year' (we're grabing the year from the StartDate property)
Select-object -Property *,@{L='Year';E={$_.startdate.substring(0,4)}} |
# Group per year
Group-Object -Property year |
# Process each group
Foreach-object -Process {
    # Grab the current year
    $Year = $_.name
    # Get the contribution of the current group
    $ContributionsOfYear = $_.Group
    # Output the Contribution of the current year
    $ContributionsOfYear |
    # Convert to JSON Format
    ConvertTo-Json |
    # Save to file
    Out-File -FilePath BackupMVP_Year$Year-$(Get-Date -format 'yyyyMMdd_HHmmss').json
}

This generated 3 files for me:

BackupMVP_Year2015-20180122_215512.json
BackupMVP_Year2016-20180122_215512.json
BackupMVP_Year2017-20180122_215512.json

Hope you enjoyed this article !

Leave a comment