более конкретно Я хочу получить доступ к значению параметра ErrorAction
с помощью командлета.
В powershell все работает как положено
function Get-Test {
[CmdletBinding()]
param (
)
(Get-Variable|where{$_.Name -eq "ErrorActionPreference"}).Value
}
Get-Test -ErrorAction SilentlyContinue
выдаст SilentContinue
Однако тот же вызов в c # выдаст Continue
[CmdletBinding]
[Cmdlet(VerbsCommon.Get,"Test")]
public class MyClass:PSCmdlet{
protected override void ProcessRecord(){
base.ProcessRecord();
WriteObject(((PSVariable) InvokeCommand.InvokeScript($"Get-Variable|where{{$_.Name -eq 'ErrorActionPreference'}}").First().BaseObject).Value);
}
}
похоже, что нет никакой связи между параметром ErrorAction
и ErrorActionPreference
при c#
.Я говорю это потому, что если я сделаю
$ErrorActionPreference="SilentlyContinue"
Get-Test # c# version
, то выдаст SilentlyContinue