我正在尝试导入xml文件并将其存储为PowerShell会话的其余部分的变量。导入显然是成功的,但变量内容不会在函数之外持久存在。
Function auth
{
$cred = import-clixml -Path c:\temp\cred.xml
}
答案 0 :(得分:1)
试试这个:
Function auth
{
$global:cred = "test"
}
auth
$global:cred
答案 1 :(得分:1)
你可以像Esperento57建议的那样使用全局变量,或者你可以这样做
function auth
{
return 'test'
}
$cred = auth
更简洁:
function auth
{
'test'
}
$cred = auth
答案 2 :(得分:0)
您需要先在函数作用域之外声明变量,然后在函数内部使用 script:var
方法明确告诉变量更新。
这里的例子取自 https://www.kongsli.net/2013/04/25/powershell-gotchas-refer-to-variables-outside-a-function/,给予信用。
<块引用>问题是我们必须明确告诉 Powershell 更新父作用域中的变量,而不是在当前作用域中创建一个新变量。
$x = 1
function changeit {
"Changing `$x. Was: $x"
$script:x = 2
"New value: $x"
}
"`$x has value $x"
changeit
"`$x has value $x"
答案 3 :(得分:0)
如果您需要这样做,但需要使用大量函数和变量,您可以将它们全部放入一个脚本中,然后点源脚本。
想象一个这样的脚本:
#MyDevFunctions.ps1
$myImportantVar = "somevar"
$myOtherVar = "ABC123"
Function Get-MyCoolValue(){$myImportantVar}
Write-Host "Finished Loading MyDevFunctions"
如果您想运行它,然后还保留变量的值以及函数本身,您只需像这样从父脚本调用它:
PS > . .\MyDevFunctions.ps1
"Finished Loading MyDevFunctions"
PS > $myOtherVar
ABC123
PS> Get-MyCoolValue
someVar