Tips for making it easier to consume .NET APIs from PowerShell
Prefer enum
types over constants or properties
If you use an enum, PowerShell can implicitly convert the value:
[System.Environment]::GetFolderPath('LocalApplicationData')
If you use constants or static properties, you need a load more typing.
Prefer synchronous methods to event-based asynchronous methods
PowerShell 2.0 can subscribe to .NET events, and it’s pretty powerful. It’s just fairly verbose. Given the choice between a synchronous (blocking) method and the Event-based Asynchronous Pattern, provide a synchronous interface.
Of course, you could provide both, but it’s all about await
these days anyway, which PowerShell doesn’t support.