Tag Archives: GitHub

Updated Events GitHub repository – Convert pptx to pdf

As I have been speaking at a number of events recently I also have been updating my GitHub Events repository. Usually I include a markdown file with a short description, my demos and my slides. I had been uploading my files as .pptx and I noticed that the repository edged over 100 MB. This prompted me into reconsidering this approach, I felt I needed to address the following:

  • Use the most compatible format available, presentations should be viewable on any device
  • Fonts should be correctly represented
  • File size should be minimal

In an effort to more efficiently use the space I have available and to use a more compatible format I decided to convert my presentations to .pdf.

Because I do not like doing stuff manually I decided to use PowerShell in combination with a bit of bash scripting to get my repository updated. First lets take a look what kind of data we are dealing with:

Get-ChildItem C:\git\Events -File -Filter *pptx -Recurse |
Select-Object -Property FullName

In total 29 presentations uploaded in .pptx format, if I would have to convert these by hand it would take about 30 minutes. Taking a look at what is possible with the PowerPoint.Application Com-Object took about 5 minutes and an additional 5 to put together the following script:

Get-ChildItem C:\git\Events -File -Filter *pptx -Recurse |
ForEach-Object -Begin {
    $null = Add-Type -AssemblyName Microsoft.Office.Interop.PowerPoint
    $SaveOption = [Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType]::ppSaveAsPDF
    $PowerPoint = New-Object -ComObject "PowerPoint.Application"
} -Process {
    $Presentation = $PowerPoint.Presentations.Open($_.FullName)
    $PdfNewName  = $_.FullName -replace '\.pptx$','.pdf'
} -End {
    Stop-Process -Name POWERPNT -Force

This script will recursively look for all .pptx files in the Events repository and the run the following code:

  • In the begin block load the PowerPoint Com-Object and the required type for storing files as .pdf
  • For each presentation, open the presentation, generate a new name and convert it to .pdf
  • Finally at the end close the PowerPoint application and afterwards using Stop-Process to close the window, note that if you had any other PowerPoint windows open they will also be closed.

Now I have both the .pdf and the .pptx stored in the folder, let’s take a look what the difference in file size is:

foreach ($Extension in ('pptx','pdf')) {
    Get-ChildItem C:\git\Events -File -Filter "*$Extension" -Recurse |
    Measure-Object -Property Length -Sum | ForEach-Object {
            'SizeinMB'  = [math]::Round($_.Sum/1MB,2)
            'Extension' = $Extension

A nice decrease in size and a format that is more suitable for sharing, this is looking good. After verifying that the .pdf files are looking good we can remove the .pptx files with the following code:

Get-ChildItem C:\git\Events -File -Filter *pptx -Recurse |
Remove-Item -Force

The last step is to commit everything to GitHub and make it available to everyone. I found a nice Stack Overflow thread that explained how to mass remove files:

Removing multiple files from a Git repo that have already been deleted from disk

Which left me with the following commands to run to commit everything to the repository using bash:

git ls-files --deleted -z | xargs -0 git rm 
git add *
git commit -m "Removed pesky pptx and added glorious pdf"
git push origin master

And to view the result here is what is looks like on GitHub now and the commit:

GitHub – JaapBrasser – Events – Commits

Let me know what you think, is .pdf a more useful format over .pptx to share presentations or would you rather see it the other way around?


Wrap up of Tuga IT Conference in Lisbon

Last week I attended and delivered two presentations at Tuga IT in the Microsoft HQ in Lisbon. It was a great experience and a first visit to Lisbon to me, which gave me the change to interact with the local IT communities there. Tuga IT is a conference put together by nine separate user groups based in Portugal.

To give you an impression of the event I included the following pictures:

All the code and slides are as always available in my Events GitHub repository:

Furthermore I have also uploaded my presentations to Docs and SlideShare:


Summary of PowerShell Conference Europe 2017

Last week I was lucky enough to attend and speak at the largest European PowerShell conference, PowerShell Conference Europe in Hannover.  At the conference I was surrounded by some of the best and brightest in the my field, an overwhelming and educational experience. I think it is fair to say this has been one of the best events of its kind and my thanks goes out to Tobias and the PSConfEU team for putting such a great event together.

If you missed out on the event then there is no need to fret as almost every session has been recorded and the PSConfEU team is currently working on making sure all content is available on the PowerShell Conference Europe YouTube channel:
YouTube icon Playlist: PowerShell Conference EU – PSCONF.EU 2017

To give you an impression of the event here are some pictures of the PowerShell Conference:

For the actual code and presentation slide decks that were used by all presenters you can check out the GitHub repository:
GitHub – PSConfEU – 2017

More information is continually posted, both by the PSConfEU team as well as other speakers and organizers. You can expect blog posts on the content I presented on during the conference. Let me know what topics you are most interested in and I will use that as input for upcoming blog posts.

I presented the following three topics, so head over to my GitHub account to grab the slides and code, as always it is stored in the Events repository:

Furthermore I have also uploaded my presentations to Docs and SlideShare.


Virtual PowerShell Presentation Microsoft User Groups Singapore

Last Friday I presented at the PowerShell Meetup of the Microsoft User Groups based in Singapore. Having been a speakers at the PowerShell Conference Asia, which is also held in Singapore, for the past two years, it was nice to virtually be present in the Microsoft offices again. 

The session I prepared was on the topic of writing PowerShell code, what tools to use and how to leverage the strengths of those tools. I focused the presentation on using both Visual Studio Code, VSCode, and the PowerShell ISE in combination with ISESteroids.

I have uploaded all the materials I used during my presentation to my Events GitHub Repository, which is available here:

GitHub – Jaap Brasser – Events – MSUG Singapore

To get an impression of the event, the event organizer Sebastian Szumigalski was kind enough to provide me with these pictures of the event, be sure to check out his blog it contains a lot of great content. Here are some of the photos to give you an impression of the event.

The PowerPoint slides are also available on SlideShare:


Dutch PowerShell User Group – 10th Edition

Last Thursday we hosted the tenth Dutch PowerShell User Group at Rabobank in Utrecht. It was another full day event starting at 9AM and finishing at 6PM. For this event, we had a diverse range of speakers and as a highlight we had Jakub Jareš visit our user group and giving two presentations on proper testing with Pester and Continuous Deployment for PowerShell.

Due to the enthusiasm of Ben van Zanten, Bartek Bielawski and Daniel Both we had three surprise speakers that added to our already full day of session. Our complete program of the day consisted of the following:

09:00 10:00 Jakub Jareš Continuous deployment pipeline for PowerShell modules
10:00 11:00 André Kamman Fighting SQL Server Configuration Drift with Dynamic Pester Tests
13:00 14:00 Jakub Jareš Biggest mistakes when testing with Pester
14:00 15:00 Ralph Eckhard & Sven van Rijen Keep up with NOW! Automate (re-)building your homelab – on steroids!
15:00 16:00 Ben van Zanten Splatting and building new AD forests
16:00 17:00 Jaap Brasser The best tool for the job: Working with VScode and ISE
17:00 17:30 Bartek Bielawski & Daniel Both Distributed configuration management and source control

I have uploaded all the materials I used during my presentation to my Events GitHub Repository, which is available here:

GitHub – Jaap Brasser – Events – DuPSUG 10

For the Dutch PowerShell User Group we maintain a separate repository which we keep updated with all presentation materials as they are made available by our presenters, this is available here:

GitHub – DuPSUG – DuPSUG 10

We would like to extend our thanks to our event sponsor, Rabobank for sponsoring us. The speakers and attendees alike for taking time out of their busy schedules to attend our meeting. To give you an impression of the event here are some pictures of the day:



9th DuPSUG Meeting – Ninth time is the charm

The 9th Dutch PowerShell User Group meeting, almost exactly four years after our very first meeting. First of all I would like to thank everyone involved, speakers, IPsoft and our attendees for making this event into a success. We announced this event just 6 days before it was actually held and we were at full capacity within two days. A great show of community involvement which was definitely present during the evening.

During the event we had the following  three speakers and sessions:

Speaker Session
Aleksandar Nikolić Just Enough Administration (JEA), a New Solution for Delegated Administration
Flynn Bundy Getting started with Windows Server Containers
Jaap Brasser Read the Friendly PowerShell Logs

The event was hosted and generously sponsored by IPsoft and the following photos will give you an impression of the event:

We have also created a separate repository on the DuPSUG GitHub account which has all available presentations:


During the evening Thierry Cailleau once provided us with live reports of the content being presented including notes and links in our Slack channel, dupsug.slack.com. Feel free to join us there to catch up on the details of the evening.

We hope to see you again in the next year as we have many more events planned in 2017!


Recap of Dutch PowerShell Saturday September 2016

Last weekend we gathered for yet another PowerShell Saturday, this time hosted in Amsterdam by IPsoft who generously provided us with the space to hold our meeting. This was the second time we organized the PowerShell Saturday event and it was nice to see that once again we had a great turnout. Not the least because of the great line up of speakers, during the event we had the following four speakers:

Speaker Session
Flynn Bundy Nano Server – The Future is Now
Javy de Koning Optimizing code for collaboration
Matthew Hodgkins Chatops with PowerShell
Irwin Strachan OVF – Pester for SysAdmins

During the event we took a number of pictures to give you an impression of event:

During the event Thierry Cailleau provided us with live reports of the content being presented including notes and links in our Slack channel, dupsug.slack.com. Feel free to join us there to catch up on the details of the day or if you have any questions regarding the content that was shared during PowerShell Saturday.

After a full morning and afternoon of presentations we continued on with the Open Stage, this is the section of the PowerShell Saturday where we will have room for several short presentations, the opportunity to share something interesting you have found out when working with PowerShell and a moment to discuss common issues. In which both me and Flynn shared some ideas on Docker and exporting PowerShell objects as binary streams.

For the full list of materials shared during the event and the open stage please refer to this overview of links:

Links in this article
Flynn Bundy DevBlog
Javy de Koning – Optimizing code for collaboration
Matthew Hodgkins – ChatOps presentation
Matthew Hodgkins – Hubot DSC Resource / PSHubotDocker
ChatOps – Managing Operations in Group Chat
Irwin Strachan – OVF – Pester for SysAdmins
Dutch PowerShell User Group – DuPSUG