gpt4 book ai didi

function - PowerShell 将其他值添加到函数的返回值中

转载 作者:行者123 更新时间:2023-12-03 09:10:53 26 4
gpt4 key购买 nike

PowerShell 似乎向函数的返回值添加了一个附加变量。

函数 subfoo2 本身提供了正确的值,但是一旦 PowerShell 跳回我调用该函数的位置(在 foo1 中),value 就包含该值其他变量 ($msg)

(看一下代码中的注释)

writeMessageLog($msg){
...
Add-Content $msg
...
}
subfoo2{
writeMessageLog($msg)
return $UserArrayWithValues #During Debug, $Array is fine (1)
}
foo1{
$var = subfoo2 $UserArray # $var has now the value of $msg and $UserArrayWithValues (2)
#do something with var
}

真实代码:

function WriteLog 
{
param ( [string] $severity , $msgNumber, [string] $msg )
...

$msgOut = $date + ... + $msg
Add-Content $msgout ( $msgOut )
...
}

function getFeatures
{
writelog 'I' 1002 $true $true "Load Features"
$Features = importCsv -pPath $FeatureDefintionFilePath
Writelog 'I' 1000 $true $true "Features Loaded"
return $Features # $Features has value as expected (1)
}


function GetUserFeatures ($pUserObject)
{

$SfBFeatures = ""
$SfBFeatures = getFeatures #SfBFeaures has Value of $msg and $Features (2)
...
}

我使用的函数/返回值是否错误?什么会导致这种行为?如果我在函数内调用函数会出现问题吗?

如果我删除 writeMessageLog 中的 $msgOut = $date + ... + $msg,这些值就很好。

我现在很迷茫,不知道这是从哪里来的。欢迎任何想法。

最佳答案

这就是 powershell 的工作原理,基本上您打印出的所有内容都将作为函数输出返回。所以不要输出多余的东西。要强制某些东西不输出你可以做的事情:

$null = some-command_that_outputs_unwanted_things

由于每个人都痴迷于 Out-Null 我将添加此 link展示了其他几种方法来做到这一点。

关于function - PowerShell 将其他值添加到函数的返回值中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42553063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com