PowerShellRunner - это библиотека для типизированной работы с PowerShell.
Пример типизированного описания командлета в коде:
publicclassConvertToSecureStringCmdlet:IPowerShellCmdlet<SecureString>{publicstringCmdletName=>"ConvertTo-SecureString";publicIPowerShellCmdletParameter<string>String{get;}publicIPowerShellCmdletParameter<SwitchParameter>AsPlainText{get;}publicIPowerShellCmdletParameter<SwitchParameter>Force{get;}}Пример формирования комнады:
ConvertToSecureStringCmdletcmdlet=newConvertToSecureStringCmdlet().Set(c =>c.String,"Value").Set(c =>c.AsPlainText,true).Set(c =>c.Force,false);PowerShellQueryquery=cmdlet.BuildFromCmdlet();// query.Query: ConvertTo-SecureString -String "Value" -AsPlainTextПример выполнения комнады с сохранением в переменную:
PowerShellVariable<SecureString>result=powerShellAccessor.SelectCmdlet(cmdlet).ExecuteAndSetTo("$converted_string");При выполнении командлета автоматически резолвится тип результата / тип переменной в которую будет записан результат. В дальнейшем переменную можно передавать в другие командлеты:
publicclassSomeOtherCmdlet:IPowerShellCmdlet<string>{publicstringCmdletName=>"Some-Other";publicIPowerShellCmdletParameter<SecureString>String{get;}}PowerShellVariable<SecureString>convertedString=powerShellAccessor.SelectCmdlet(cmdlet).ExecuteAndSetTo("$converted_string");SomeOtherCmdletotherCmdlet=newSomeOtherCmdlet().Set(c =>c.String,convertedString);IReadOnlyCollection<string>result=powerShellAccessor.SelectCmdlet(otherCmdlet).Execute();