First from CMD, that is pretty easy:

rundll32.exe user32.dll, LockWorkStation

Now, with PowerShell, it is about the same, we call the user32.dll, just it is a little more work to get that to work right:

$script:nativeMethods = @();
function Register-NativeMethod([string]$dll, [string]$methodSignature)
{
    $script:nativeMethods += [PSCustomObject]@{ Dll = $dll; Signature = $methodSignature; }
}
function Add-NativeMethods()
{
    $nativeMethodsCode = $script:nativeMethods | foreach { "
        [DllImport(`"$($_.Dll)`")]
        public static extern $($_.Signature);
    " }
 
    Add-Type @"
        using System;
        using System.Runtime.InteropServices;
        public static class NativeMethods {
            $nativeMethodsCode
        }
"@
}
 
Register-NativeMethod "user32.dll" "bool LockWorkStation()"
Add-NativeMethods
[NativeMethods]::LockWorkStation()

Credit for how to call DLLs from PowerShell goes to Danny.