PowerShell から Win32 API を呼び出す方法

PowerShell から Win32 API を呼び出す方法。
C# で Win32 API を呼び出すコードを書き、それを Add-Type に渡すことで PowerShell から呼び出すことが出来ます。
MessageBox を呼び出すサンプルです。
# この変数に C# のコードを記す。
# C# を経由して Win32 API を呼び出す。
$code = @'
using System;
using System.Runtime.InteropServices;
namespace Win
{
public class API
{
[DllImport("user32",EntryPoint="MessageBoxW",CharSet=CharSet.Unicode)]
public extern static int MessageBox( IntPtr hWnd, string sText, string sTitle, uint nType );
}
public enum MB : uint
{
ICONSTOP = 0x00000010U,
ICONQUESTION = 0x00000020U,
ICONEXCLAMATION = 0x00000030U,
ICONINFORMATION = 0x00000040U,
}
}
'@
try
{
# Add-Type に $code(C# コード)を渡す。
Add-Type -TypeDefinition $code -EA Stop
}
catch
{
"Error"
return
}
# MessageBox を呼び出す。
# 行頭の [void] を削除することで MessageBox の戻り値を取得でます。
[void][Win.API]::MessageBox( 0, "本文", "タイトル", [Win.MB]::ICONINFORMATION )