powershell - 如何将项目添加到函数中的数组作为Powershell上的脚本变量?
问题描述
我正在尝试将项目添加到我在函数之外声明的数组变量。
这是我的代码以非常简化的方式的想法:
function Test($NAME, $SPEED){
$fName = "testName"
$fSpeed = 100
if($status = ($fName -eq $NAME) -and ($fSpeed -eq $SPEED))
{}
else{
if($fName -ne $NAME)
{$errorMessages += "The name is not" + $NAME}
if($fSpeed -ne $SPEED)
{$errorMessages += "The speed is not" + $SPEED}
}
return $status
}
$script:errorMessages=@()
$result=@()
$result += Test -NAME "alice" -SPEED "100"
$result += Test -NAME "bob" -SPEED "90"
#result is an array of booleans that I need later on
$errorMessages
当我显示 $errorMessages 时,这是我想要的预期输出:
The name is not alice
The name is not bob
The speed is not 90
但是,当我尝试在函数之外显示变量时,甚至在“else”块之外,我什么也没有打印出来。如何正确地将错误消息添加到数组中?
解决方案
您想errorMessages
通过脚本范围调用。因此,您必须在函数中使用$script:errorMessage
(而不是)。$errorMessage
function Test($NAME, $SPEED) {
$fName = "testName"
$fSpeed = 100
$status = ($fName -eq $NAME) -and ($fSpeed -eq $SPEED)
if (!$status) {
if ($fName -ne $NAME) {
$script:errorMessages += "The name is not" + $NAME
}
if ($fSpeed -ne $SPEED) {
$script:errorMessages += "The speed is not" + $SPEED
}
}
$status
}
$errorMessages = @()
$result = @()
$result += Test -NAME "alice" -SPEED "100"
$result += Test -NAME "bob" -SPEED "90"
#result is an array of booleans that I need later on
$errorMessages
现在你得到了预期的输出:
The name is notalice
The name is notbob
The speed is not90
还要注意return
PowerShell -> stackoverflow 答案中的语句
希望有帮助
推荐阅读
- firebase - Elasticsearch 中类似 Firestore 的聚合功能
- vue.js - VUE3:属性...在渲染期间被访问但未在实例上定义
- hadoop - 在 hive 外部表中添加一个新分区并将现有分区更新为表的列到非分区列
- c++ - 如何从命令行参数获取 argv 作为 LPWSTR* 而不是 char**?
- angular - 返回 observable 但等到另一个完成
- ios - 密码自动填充将密码插入父 UIViewController
- catboost - catboost 数据可视化不显示
- c# - Asp.net Core SendGrid 动态模板集成
- mysql - NodeJS:如何将实体从 mysql 发送到 rabbitmq
- youtube-api - 如果不是嵌入网址,如何强制字幕?