这是我的代码。我的主要问题是我在函数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
}
}