Die Windows Sandbox ist ein super Tool, um Installationen oder Programmverhalten zu testen. Oft werden für solche Aufgaben aber PowerShell Module benötigt, welche nicht vorinstalliert sind. PowerShell Module können aber einfach mit einem WSB- und PS1-File in der Windows Sandbox installiert werden. Ich nutze dazu für verschiede Zwecke jeweils denselben Aufbau des WSB Files mit den entsprechenden PowerShell Modulen in einem Array.

Der Aufbau des WSB Files ist der folgende:

<Configuration>
  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\GitHub\scloud\Windows-Sandbox</HostFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
  </MappedFolders>
  <LogonCommand>
    <Command>powershell -executionpolicy unrestricted -command "start powershell {-noexit -file C:\Users\WDAGUtilityAccount\Desktop\Windows-Sandbox\APP-Upload.ps1}"</Command>
  </LogonCommand>
</Configuration>Code language: HTML, XML (xml)

Mit dieser Konfiguration (Linie 4 & 5) wird der Ordner, in welchem sich das PowerShell Installations File befindet, im ReadOnly-Modus in die Sandbox gemappt.
In der Linie 9 ist definiert, dass das entsprechende PS1 File beim Start gestartet wird.
Der Inhalt dieses ist:

# Array of the PowerShell Modules
$PSModules = "ExchangeOnlineManagement", "MicrosoftTeams"

# ExecutionPolicy and NuGet
Set-ExecutionPolicy Unrestricted -Force
Install-PackageProvider -Name NuGet -Force

# Install all defined Modules
foreach($Module in $PSModules){
    Write-Host $Module
    Install-Module -Name $Module -Force
}Code language: PowerShell (powershell)

In diesem Beispiel installiere ich das Exchange Online und Teams Modul.

Sobald diese beiden Dateien bestehen, kann die WSB Datei doppelgeklickt werden und startet die Sandbox inklusive der Modul Installation.
Die Beispieldateien sind zudem hier zum Herunterladen auf meinem GitHub Repo (PS-Modules.ps1 & PS-Modules.wsb): scloud/Windows-Sandbox at main · FlorianSLZ/scloud (github.com)

Des Weiteren habe ich einige zusätzliche Beispiele erstellt, welche helfen können:

FilenameBeschreibung
win32-automatedImport von win32 Applikationen in Intune. (Blog-Beitrag)
HostMachine-FolderRead/Write Zugriff auf den lokalen GitHub Repo Ordner sowie Module "MSOnline", "AzureADPreview"
M365DocumentationZum Erstellen der M365 Dokumentation (by Thomas Kur, Github)
PS-ModulesBeispiel von Oben
CallFlowDokuVisualisierung der Teams Call-Flows: Demo und Erklärung

Wichtig ist beim Verwenden meiner Vorlage, die Pfade im WSB File anzupassen. Ansonsten funktioniert die Installation der PowerShell Module in der Windows Sandbox nicht.

Ich selbst nutze gerade die Option des eingebundenen Ordners oft, um Programminstallationen zu testen, wie z.B. meine Win32 Apps (my take on win32 apps - Intune | scloud).

Windows Sandbox aktivieren

Funktioniert das Öffnen der Sandbox nicht, muss das Windows Feature möglicherweise zuerst aktiviert werden.
Das kann unter den Windows Features oder mit folgendem PowerShell gemacht werden:

Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -Online -NoRestart -ErrorAction Stop
Code language: PowerShell (powershell)