Как вернуть эталонное значение с помощью метода из расширенного объекта Powershell? - PullRequest
1 голос
/ 28 апреля 2020

Я пытаюсь расширить объект Powershell с помощью метода, который

  1. возвращает true или false, чтобы указать успех
  2. выводит значение по ссылке ([ref])

В моем модуле MyExtensions.psm1.

Update-TypeData -TypeName [MyType] -MemberType ScriptMethod -memberName TryGetValue -force -value `
{
    param(
        $myInput,
        [ref]$myOutput
    )

    try
    {
        # do something with $myInput
        $myOutput = …
        return $true
    }
    catch
    {
        return $false
    }

} 

Цель состоит в том, чтобы иметь возможность писать в сценарии или в другом модуле:

Import-Module MyExtensions
$myInput = …
$value = $null
if($myTypeItem.TryGetValue($myInput, $value)
{
  # I know that the $value is good
}

1 Ответ

1 голос
/ 28 апреля 2020

Использование аргумента по ссылке (вы просто пропускаете $myOutput.Value ="")

function addition ([int]$x, [int]$y, [ref]$R)
{
 $Res = $x + $y
 $R.value = $Res
}

$O1 = 1
$O2 = 2
$O3 = 0
addition $O1 $O2 ([ref]$O3)
Write-Host "values from addition $o1 and $o2 is $o3"

Более полный ответ здесь .

...