具有以下功能:
function appendToSB([System.Text.StringBuilder]$sb,
[string]$value){
[void]$sb.append($value)
$sb
}
$sb = new-object -typename system.text.stringbuilder
$sb = appendToSb($sb, "1,")
$sb.tostring() | out-host
Run Code Online (Sandbox Code Playgroud)
我想使用我的函数使用StringBuilder构建字符串,但我收到以下错误:
appendToSB:无法处理参数'sb'上的参数转换.无法将ty pe"System.Object []"的"System.Object []"值转换为"System.Text.StringBuilder"类型.在E:\ powershell\test.ps1:8 char:11 + appendToSb([system.text.stringbuilder] $ sb,"1,")+ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidData :( :) [appendToSB],ParameterBindingArgumentTransformationException + FullyQualifiedErrorId:ParameterArgumentTransformationError,appendToSB
有没有人可以解释函数/函数参数/返回值如何在powershell中工作?
Kei*_*ill 14
经典的PowerShell问题.调用命令或函数时,不要使用parens或逗号分隔的args,例如:
appendToSb $sb "1,"
Run Code Online (Sandbox Code Playgroud)
您只在调用.NET方法时使用该语法.如果你使用Set-StrictMode -Version 2它会遇到这种问题.您传递的内容($ sb,"1,")是将数组传递给单个参数的方式.从技术上讲,不需要parens但不改变值,即你也可以传递这样的数组$sb, ",".
| 归档时间: |
|
| 查看次数: |
7719 次 |
| 最近记录: |