Python kann mit dem json-Modul Strings im JSON-Format direkt in einen Dictionary konvertieren. Zum Import aus einer JSON-Datei muss man die Datei zuerst mit open einlesen. 

import json
with open('c:\user.json') as user:
    message = json.load(user) 

Python erwartet hier, wie im JSON-Standard definiert, eine in UTF8 codierte Datei ohne BOM (Byte Order Mark). Powershell speichert bis zur Version 5.1 allerdings alle Dateien mit BOM - auch dann, wenn man explizit UTF8 als Format ausgewählt hat. Die BOM ist im ersten Byte der Datei kodiert, und entsprechend lautet auch die Fehlermeldung von Python: 

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Man kann die Datei unter Windows 11 einfach im Notepad öffnen und ohne BOM speichern oder alternativ die Datei in Powershell 7 öffnen, da das Problem hier gefixt wurde. 

 Alternativ kann man in Powershell 5 statt der Cmdlets Out-File direkt auf das .net-Framework zurückgreifen. 

$Json = Get-Command | ConvertTo-Json
[System.IO.File]::WriteAllLines('C:\mycommands.json', $Json)