PowerShell извлекает переменную из функции в скрипт - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть функция Text Box, которая создает переменную $ text Как бы я вытащил эту переменную из функции, чтобы использовать ее позже в скрипте.

Function System-Box{
[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')

$title = 'System Identification'
$msg   = 'Type in the System Name you 
are Generating Certificates for.

The acceptable responses are:
//////////////////////////////////////////////////////
                    NCC-D

                    ICAP  

                    SCP  

                    RFK
//////////////////////////////////////////////////////

Press OK to Continue.'
$text = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title,"")
$AcceptableText = @("NCC-D","ICAP","SCP","RFK","")

If($text -in $AcceptableText)
    {
    If(!(Test-Path $CertPath\$text))
    {
        New-Item -ItemType directory -Path $CertPath\$text
    }
}
Else
{
$wshell = New-Object -ComObject Wscript.Shell
$Warning = $wshell.Popup(
"----------------------- WARNING!! -----------------------

You have entered an Invalid Response.

Press OK to enter a valid System Name.", #Text within the Pop-up
0,
"WARNING!", #Title of the Pop-up
48+1
)

if($Warning -eq 1){System-Box}
}
}

/// Other un-related parts of the script ///

If($text -in "NCC-D"){
Move-Certs -NCC-D
}
Else
{
If($text -in "ICAP"){
Move-Certs -ICAP
}
}

The Move-Certs Функция, которая также вызывается, имеет параметры, установленные для запуска определенных деталей. Я пытаюсь использовать переменную $text для вызова определенных параметров.

1 Ответ

1 голос
/ 21 февраля 2020

Это проблема с областью видимости. Вы хотите, чтобы переменная, определенная в области действия функции, была доступна в области действия сценария. Чтобы сделать это легко, вы можете определить переменную в области действия скрипта.

# p.ps1 script contents
Function Set-TextVariable {
    $script:text = "mytext"
}
Set-TextVariable
$script:text

# Calling p.ps1 script
.\p.ps1
mytext

Область, в которой переменная определена и назначена относительно области вызова, определяет выходной результат. При выполнении сценария создается область сценария. Когда вы создаете функцию, эта функция также имеет свою область видимости. В этой области может быть вызвана любая переменная, определенная в области. Вы можете явно выбрать область видимости, используя модификатор при взаимодействии с переменными.

См. Об областях действия для получения дополнительной информации. О функциях также содержит информацию о области действия функции.

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