Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell变量值未保留_Powershell_Variables - Fatal编程技术网

PowerShell变量值未保留

PowerShell变量值未保留,powershell,variables,Powershell,Variables,我是Powershell的新手 PS的工作方式让我很惊讶,尤其是它如何保留变量 例如: [string]$a="" $a = "world" $b = "Hello $a" write-host $b $a = "world2" write-host $b 结果如下: Hello world Hello world 为什么第二个写入主机不显示Hello world2?仅仅是因为当您写入$b=Hello$a时,$a的值被消耗,而新字符串是Hello world。就像JPBla

我是Powershell的新手

PS的工作方式让我很惊讶,尤其是它如何保留变量

例如:

[string]$a=""    
$a = "world" 
$b = "Hello $a" 
write-host $b 

$a = "world2" 
write-host $b
结果如下:

Hello world
Hello world

为什么第二个写入主机不显示Hello world2?

仅仅是因为当您写入$b=Hello$a时,$a的值被消耗,而新字符串是Hello world。

就像JPBlanc所说的那样,您的变量被重写了

您可以这样做:

$a = "world" 
Set-PSBreakpoint -Variable b -Mode Read -Action { $global:b = "Hello $a" }

write-host $b  

$a = "world2" 
write-host $b
或者简单地使用一个函数:

function SayHello($who){
"Hello $who"
}

$a = "world" 
SayHello($a)

$a = "world2" 
SayHello($a)

实际上,大多数语言都是这样工作的!不,调试入口点应该是为调试而不是为编程而保留的。当然我同意你的观点,但任何方法都值得知道。如果我们开始按照这个或那个标准分类,我们什么都学不到。。。不