Как вывести указанное значение? - PullRequest
0 голосов
/ 06 мая 2019

У меня есть следующая функция.

function Params {
    param (
        [Parameter(Mandatory = $true)]
        [Alias('Param1')]
        [AllowNull()]
        ${Param1[default value]}
    )
    [ref] $Param1 = 
        if (${Param1[default value]}) {
            ${Param1[default value]}
        } else {
            'default'
        }
}

Params

$input1 = $null

"the param input is $([ref]$input1)"

Если я введу что-то для параметра в приглашении или если я оставлю это значение по умолчанию, я получу это как вывод для $([ref]$input)

входным параметром является System.Management.Automation.PSReference`1 [System.Management.Automation.LanguagePrimitives + Null]

Почему вместо этого я не получаю значение?

Я хочу этот вывод, например:

ввод параметров по умолчанию

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Ускоритель типов [ref] (это не ускоритель типов в обычном смысле, но он создает объекты PSReference, так что ... вроде как) получает вас, как вам говорят,объект PSReference.

Для того, чтобы извлечь из него значение, вам необходимо запросить его специально.В вашем коде вы можете получить к нему доступ, извлекая свойство Value из созданного ссылочного объекта.

"the param input is $(([ref]$input1).Value)"

Однако, учитывая, что $input1 не назначено, вам, возможно, придется немного изменить рефакторинг.чтобы получить то, что вы ищете.

1 голос
/ 06 мая 2019

Я закончил тем, что прибегнул к другому методу, чтобы добиться того, чего я хочу:

Определение этого в верхней части скрипта:

[CmdletBinding()]
Param(
    $Param1 = (Read-Host -prompt "Param1")
)
if (!$Param1) { "default" }

"the param input is $Param1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...