Private/Enter-S0ix.ps1

function Enter-S0ix {
    [CmdletBinding(SupportsShouldProcess)]
    Param ()

    if ($PSCmdlet.ShouldProcess("this", "Send SC_MONITORPOWER")) {
        $signature = @'
[DllImport("user32.dll", SetLastError = true)]
public static extern bool SendNotifyMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
'@

        if (-not ([System.Management.Automation.PSTypeName]'Win32SendMessage').Type) {
            Add-Type -MemberDefinition $signature -Name 'Win32SendMessage' -Namespace 'Win32'
        }

        # hWnd = HWND_BROADCAST
        # Msg = WM_SYSCOMMAND, wParam = SC_MONITORPOWER
        # lParam: -1 -> screen on, 1 -> screen standby, 2 -> screen off
        [Win32.Win32SendMessage]::SendNotifyMessage([IntPtr]0xFFFF, 0x0112, [IntPtr]0xF170, [IntPtr]2) | Out-Null
    }
}