using namespace Microsoft.Win32; $null = New-Module { function Edit-DefaultUserKey { param( [scriptblock] $Action ) $rootPath = "HKLM:\DefaultUser"; $regRootPath = $rootPath -replace "^(\w+):([\\/]|$)","`$1`$2"; $hivePath = "$env:SystemDrive\Users\Default\NTUSER.dat"; $null = & reg load $regRootPath $hivePath; [RegistryKey] $root = Get-Item $rootPath; & $Action -Key $root; $root.Handle.Close(); [System.GC]::Collect(); & reg unload $regRootPath; } <# .SYNOPSIS Sets a message to show on the login screen. .PARAMETER Caption The title of the message. .PARAMETER Message The text of the message. #> function Set-BootMessage { param( [string] $Caption, [string] $Message ) $options = @{ legalnoticecaption = $Caption; legalnoticetext = $Message; }; foreach ($key in $options.Keys) { Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" ` -Name $key ` -Type "String" ` -Value ($options[$key]); } } }