Call C# in powershell

How to call C# code in powershell

Powershell Command Add-Type

  1. usage of Add-Type
  2. we use Add-Type -TypeDefinition $code. About C# Code, we should wrap it with a class.we put our sub class, struct,method,in this class.
  3. Sample code
$Code = @'
using System.Runtime.InteropServices;
using System.Drawing;

public class GetCursor
{
	public struct POINT
	{
		public int X;
		public int Y;
		public static implicit operator Point(POINT point)
		{
			return new Point(point.X, point.Y);
		}
	};
	[DllImport("user32.dll")]
	public static extern bool GetCursorPos(out POINT lpPoint);

	public static Point GetCursorPosition()
	{
		POINT lpPoint;
		GetCursorPos(out lpPoint);
		return lpPoint;
	}
}
'@

we call it in powershell

    Add-Type -TypeDefinition $Code -ReferencedAssemblies System.Drawing

we call Add-Type by using parameter -memberdefinition

  1. if we use memberdefinition, parameter, we just expose the function to the powershell session, we don't need to create a class, powershell will auto generate a class for us. In this scenario, we usually, use this way to invoke native windows api. Detail info refer MSDN, Exapmle5, Here is a small code snip.
$CSharpCode=@"
	[DllImport("user32.dll")]
	public static extern bool BlockInput(bool fBlockIt);
"@
	$CS=Add-Type -MemberDefinition $CSharpCode -Name "KeyBoardMouse" -namespace win32Func -PassThru
    $res = $CS:BlockInput($true)   
posted @ 2016-05-19 17:54  kongshu  阅读(424)  评论(0编辑  收藏  举报