Skip to main content


Showing posts from October, 2019

Set default program for opening files without extensions in Windows

For some reason, downloading the request / result CSV files for a Salesforce "Bulk Data Load" job returns CSV files with the file extension missing, so you can't just click to open them. This became super annoying during a troublesome data load so I decided to fix it once and for all.  Open cmd as admin and enter the following:

assoc .="No Extension" ftype "No Extension"="C:\ProgramData\chocolatey\lib\csvfileview\tools\CSVFileView.exe" "%1"

Obviously substitute in your favourite CSV editor (unless by some bizarre coincidence, you also like CSVFileView and install everything with chocolatey).  Credit for the solution goes to this post on superuser.

Powershell - normalizing line endings for all files in a directory

If you're working with a git repository, a much better way to solve this is by changing the core.autocrlf setting.  In this case I didn't have that option, and needed a quick way to update thousands of files so the EOL chars would match in a binary diff tool.  Here's my slightly modified version of this SO answer:

$items = get-childitem -Path "C:\path\to\dir\" -Recurse -File foreach($original_file in $items) { $text = [IO.File]::ReadAllText($original_file.FullName) -replace "`r`n", "`n" [IO.File]::WriteAllText($original_file.FullName, $text) }

Connecting to Sharepoint with Powershell when MFA is enabled

If you're using multifactor auth, the usual login method mentioned in the SPOService documentation isn't going to work (using Get-Credential) and you'll get an error saying "Connect-SPOService : The sign-in name or password does not match one in the Microsoft account system".

The correct process is rather bizarre:

$orgName = "organizationname"
connect-sposervice -url "https://$"

Then you'll get the same Azure AD auth popup that you'd get with Connect-AzureRmAccount and Microsoft's other Powershell modules.  The only place I could find this was in Microsoft's docs here, but it would have saved me some time if it was at least mentioned in the help text for Connect-SPOService...

Azure Devops CLI - removing old branches after squash merges

We had a git repo with hundreds of already-merged branches which I wanted to clean up.  They'd all been merged via "squash merges", meaning there was no merge commit to easily link back to the source branches. I wanted to delete these unnecessary branches, but only the ones that had definitely already been merged into the master branch via a pull request (PR). Below is how I used the Azure Devops CLI to get a list of them. It hinges on the fact that each PR contains the name of the source branch that was being merged at the time.

# first, get a list of branches (aka references) $refs = (az repos ref list | convertfrom-json); $refNames = ($refs | select -ExpandProperty name) # next, get a list of all completed pull requests that merged into the master branch $prs = (az repos pr list --status=completed --target=master | convertfrom-json) # finally, find the PRs where the source branch matches one of the current branches, and select some relevant fields. These should be s…

Set 'Windows spotlight' lockscreen images as desktop wallpapers without installing anything

I ended up moving the code for this post into my github since I'm using it myself ;) Get it from here:

Once you've cloned it, the only things you need to do are:

Decide where you want the wallpaper images to goUpdate the $location variable in the script with that location (I'm using ~\Pictures\Spotlight Wallpapers)Run the scriptOpen windows background settings and set the background type to "slideshow", pointed at that locationRun the script at startup if you want to get new images all the time (optional but recommended)