如何更新powershell中变量中的变量?
我正在为一个脚本制作一个菜单系统,我可以通过使用菜单或将它们作为参数传递给脚本来更改需要的值。我目前的一个烦恼是在菜单刷新时输入新值后,菜单文本中的变量不会更新为新值如何更新powershell中变量中的变量?,powershell,Powershell,我正在为一个脚本制作一个菜单系统,我可以通过使用菜单或将它们作为参数传递给脚本来更改需要的值。我目前的一个烦恼是在菜单刷新时输入新值后,菜单文本中的变量不会更新为新值 $global:drive="C:" $title = "Setup " $message = "The default variables are: VARIABLES TO CHANGE 1. The Drive
$global:drive="C:"
$title = "Setup
"
$message = "The default variables are:
VARIABLES TO CHANGE
1. The Drive Location: $global:drive <<<--- This is the variable that does not update after I change it when I run the script.
"
$one = New-Object System.Management.Automation.Host.ChoiceDescription "&1 Drive", "The Drive Location:"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($one)
:OuterLoop do
{
for ($i = 1; )
{
$result = $host.ui.PromptForChoice($title, $message, $options, 1)
switch ($result)
{
0 {$global:drive = Read-Host "Drive is $global:drive .Set the Drive Location";
"The Drive is now: $global:drive";
break;}
}
}
}
while ($y -ne 100)
$global:drive=“C:”
$title=“设置
"
$message=“默认变量为:
要更改的变量
1.驱动器位置:$global:Drive我运行了你的代码,但我的代码在菜单中发生了变化。我所做的唯一一件事就是注释掉你的第一个$global:Drive=“C:
。如果这始终位于脚本的顶部,那么$global:Drive
将始终显示C:
您可以使用以下代码检查变量是否存在,如果该变量尚不存在,则为其赋值:
if $(!(Get-Variable -Name Drive -Scope global -ErrorAction SilentlyContinue)) { $global:drive="C:" }
如果全局变量Drive
存在,它将不起任何作用。如果它不存在,$global:Drive
将设置为C:
。希望这有帮助
在@Norm comment之后编辑:
消息未更新的原因是$title
设置在循环外部。因为$title
已经定义,所以不需要每次循环运行时都更改。只需将$title
的声明移到循环内部$result=$host.ui.PromptForChoice行之前($title、$message、$options,1)
。这将解决您遇到的问题
Edit2:对不起,需要移动的是$message
,不是$title
我运行了你的代码,但是我在菜单中做了更改。我所做的唯一一件事就是注释掉你的第一个$global:drive=“C:
。如果这始终位于脚本的顶部,那么$global:drive
将始终显示C:
您可以使用以下代码检查变量是否存在,如果该变量尚不存在,则为其赋值:
if $(!(Get-Variable -Name Drive -Scope global -ErrorAction SilentlyContinue)) { $global:drive="C:" }
如果全局变量Drive
存在,它将不起任何作用。如果它不存在,$global:Drive
将设置为C:
。希望这有帮助
在@Norm comment之后编辑:
消息未更新的原因是$title
设置在循环外部。因为$title
已经定义,所以不需要每次循环运行时都更改。只需将$title
的声明移到循环内部$result=$host.ui.PromptForChoice行之前($title、$message、$options,1)
。这将解决您遇到的问题
Edit2:对不起,需要移动的是$message
,而不是$title
,谢谢Nick。我给出的代码不准确,因为它是一个更大集合的一部分,我必须对它进行一些删节才能切中要害。这样做我就省去了while循环。如果你再次运行它,你应该明白我的意思。不过你提出了一个很好的观点。谢谢这太明显了。谢谢尼克。我只是一直告诉自己……DUH1:)没问题,我们在某个时候都做过同样的事情:)谢谢尼克。我给出的代码不准确,因为这是一个更大的集合的一部分,我不得不对它进行一些删减以达到目的。这样我就省去了while循环。如果你再运行一次,你应该明白我的意思。不过你提出了一个很好的观点。谢谢,伙计,这太明显了。谢谢尼克。我只是一直告诉自己……DUH1:)没问题,我们在某些时候都做过同样的事情:)