我看不到在函数中写入的变量的值,在另一个函数中



这是我的代码。我的主要问题是我在函数location中要求一个变量,但是当我尝试在函数中编写它时Show-Menu它显然是空的。

我四处搜索,发现应该在变量之前使用全局。喜欢这个:

function Show-Menu {
    Param(
        [string]$Title = 'Menu'
    )
    cls
    Write-Host "================ $Title ================"
    Write-Host "                                        "
    Write-Host "The path is $global:path"
    Write-Host "1: Press '1' for IDF config."
    Write-Host "2: Press '2' for MDF config."
    Write-Host "Q: Press 'Q' to quit."
}
function location {
    cls
    $global:path = Read-Host -Prompt "Set path to save your configurations (default C:Network_configs)"
    #Acuerdate que no funciona bien, por el hecho de tener variables en diferentes funciones. 
    if ([lenght]$global:path -le 1) {
        $global:path = C:Network_configs
    }
}

如果没有键盘入口,我希望输出带有路径 C:\Network_configs,但我有以下输出:

=============== 菜单 ==================路径是1:按"1"进行 IDF 配置。2:按"2"进行MDF配置。问:按"Q"退出。请选择:

不建议使用全局变量 签出变量范围。

但是,您非常接近,请尝试检查用户输入,如果为 null,请使用默认值。

function Show-Menu
{
    Param(
        [string]$Title = 'Menu'
    )
    cls
    Write-Host "================ $Title ================"
    Write-Host "                                        "
    Write-Host "The path is $global:path"
    Write-Host "1: Press '1' for IDF config."
    Write-Host "2: Press '2' for MDF config."
    Write-Host "Q: Press 'Q' to quit."
}
function location
{
    cls
    $userInput = Read-Host -Prompt "Set path to save your configurations (default C:Network_configs)"
    if ($null -eq $userInput)
    {
        $global:path = 'C:Network_configs'
    }
    else
    {
        $global:path = $userInput
    }
}

最新更新