【发布时间】:2020-05-19 22:28:04
【问题描述】:
当我在 PowerShell 中运行此代码时:
function Check-Missing([String] $arg1, [String] $Arg2, [String] $Arg3)
{
echo $arg1
echo "----------"
echo $arg2
echo "----------"
echo $Arg3
}
$titi = "123"
$toto = "456"
$tata = "789"
Check-Missing($titi,$toto,$tata)
我得到这个输出:
123 456 789
----------
----------
我根本无法理解它:-(这里发生了什么?!等等,它变得更好了:
function Start-App{
Param(
[parameter(Mandatory=$true)]
[System.Object] $Arg1,
[System.Object] $Arg2,
[System.Object] $Arg3
)
echo $arg1
echo "---"
echo $arg2
echo "---"
echo $Arg3
}
$a = "abc"
$b = "bcd"
$c = "cde"
Start-App($a.ToString(),$b.ToString(),$c.ToString())
这段代码给了我以下信息:
abc
bcd
cde
---
---
我也试过这个:
function Start-App{
Param(
[parameter(Mandatory=$true)]
[String] $Arg1,
[String] $Arg2,
[String] $Arg3
)
echo $arg1
echo "---"
echo $arg2
echo "---"
echo $Arg3
}
$a = "abc"
$b = "bcd"
$c = "cde"
Start-App($a.ToString(),$b.ToString(),$c.ToString())
但是得到这个完全没有意义的愚蠢错误,因为我在将变量传递给函数之前将它们转换为字符串:
Start-App : Cannot process argument transformation on parameter 'Arg1'. Cannot convert value to type System.String.
我似乎无论做什么,参数都是作为一个传递的(在第一个参数中,这不是我想要的)......我怎样才能确保正确传递参数?!
【问题讨论】:
-
powershell 不在参数列表中使用逗号作为分隔符,也不在参数列表周围使用
()。你使用逗号 AND()... 这意味着你在位置一得到了一个数组......而在其他位置什么都没有。 [咧嘴] -
请edit您的问题标题。标题应该以一种对正在筛选搜索结果列表试图找到问题解决方案的该站点的未来用户有意义的方式解释您遇到的问题或您提出的问题。您当前的标题不包含任何内容;唯一有意义的词是 Powershell,它已经是您通过添加的 Powershell 标签提供的信息。
标签: powershell