wsbScripts/demo-config.ps1

#this script runs IN the Windows Sandbox

$logParams = @{
    Filepath = "C:\log\setup.txt"
    Append   = $True
}

"[$(Get-Date)] Starting $($MyInvocation.MyCommand)" | Out-File @logParams

"[$(Get-Date)] Enabling PSRemoting" | Out-File @logParams
Enable-PSRemoting -Force -SkipNetworkProfileCheck

"[$(Get-Date)] Set DNS Server to 1.1.1.1" | Out-File @logParams
Set-DnsClientServerAddress -InterfaceIndex (Get-NetAdapter).ifIndex -ServerAddresses 1.1.1.1

"[$(Get-Date)] Install latest nuget package provider" | Out-File @logParams
Install-PackageProvider -name nuget -force -forcebootstrap -scope allusers

"[$(Get-Date)] Update PackageManagement and PowerShellGet modules" | Out-File @logParams
Install-Module PackageManagement, PowerShellGet -Force

#run remaining commands in parallel background jobs
"[$(Get-Date)] Update help" | Out-File @logParams
Start-Job -Name "Help-Update" -ScriptBlock { Update-Help -Force }

"[$(Get-Date)] Installing default modules" | Out-File @logParams
Start-Job -Name "Module-Install" -ScriptBlock { Install-Module PSScriptTools, BurntToast -Force }

"[$(Get-Date)] Install Windows Terminal" | Out-File @logParams
Start-Job -Name "Windows-Terminal" -ScriptBlock { Install-Module WTToolbox -Force ; Install-WTRelease }

#wait for everything to finish
"[$(Get-Date)] Waiting for jobs to finish" | Out-File @logParams
Get-Job | Wait-Job

foreach ($job in (Get-Job)) {
    $result = "Job {0} {1} [{2}]" -f $job.name, $job.state, (New-TimeSpan -Start $job.PSBeginTime -End $job.PSEndTime)
    "[$(Get-Date)] $result" | Out-File @logParams
}

"[$(Get-Date)] Starting Windows Terminal" | Out-File @logParams
Start-Process wt.exe "-M new-tab -d C:\ -p Windows PowerShell"

"[$(Get-Date)] Setting the host notification flag" | Out-File @logParams
Get-Date | Out-File -FilePath c:\scripts\sandbox.flag

"[$(Get-Date)] Sending toast notification in the Windows Sandbox" | Out-File @logParams

$params = @{
    Text   = "Windows Sandbox configuration is complete."
    Header = $(New-BTHeader -Id 1 -Title "Your Sandbox")
    Silent = $True
}

New-BurntToastNotification @params