相关疑难解决方法(0)

如何将多个参数传递到PowerShell中的函数?

如果我有一个接受多个字符串参数的函数,则第一个参数似乎获取分配给它的所有数据,其余参数作为空传入.

快速测试脚本:

Function Test([string]$arg1, [string]$arg2)
{
    Write-Host "`$arg1 value: $arg1"
    Write-Host "`$arg2 value: $arg2"
}

Test("ABC", "DEF")
Run Code Online (Sandbox Code Playgroud)

生成的输出是

$arg1 value: ABC DEF
$arg2 value: 
Run Code Online (Sandbox Code Playgroud)

正确的输出应该是:

$arg1 value: ABC
$arg2 value: DEF
Run Code Online (Sandbox Code Playgroud)

这似乎在多台机器上的v1和v2之间是一致的,所以很明显,我做错了.任何人都可以指出究竟是什么?

powershell

406
推荐指数
11
解决办法
55万
查看次数

在什么情况下设计使用`Invoke-Expression`?

如果您尝试使用Invoke-Expressioncmdlet,则有9/10次,有更好的方法.动态构建命令的参数?使用参数数组.构建cmdlet的参数?使用splatting与数组或哈希表.你的命令在它的路径中有空格?使用call运算符(&).

这似乎是开放式的,但它Invoke-Expression是一个易于访问的cmdlet,答案几乎总是永远不会使用它.但是cmdlet存在是有原因的,并没有被弃用,并且大多数批评它的使用状态类似于"它几乎从来都不是正确的答案",但从未说明何时可以使用它.在什么情况下可以使用Invoke-Expression?或者说它不那么公开,如何Invoke-Expression设计使用?

powershell

5
推荐指数
1
解决办法
130
查看次数

带有格式运算符的 Powershell 颜色格式

我在脚本中使用格式运算符,示例如下:

$current = 1
$total   = 1250
$userCN  = "contoso.com/CONTOSO/Users/Adam Smith"

"{0, -35}: {1}" -f "SUCCESS: Updated user $current/$total", $userCN
Run Code Online (Sandbox Code Playgroud)

这 expectedly 显示以下输出:

SUCCESS: Updated user 1/1250 : contoso.com/CONTOSO/Users/Adam Smith

格式运算符用于将目标输出文本保持在原位,当前/总运行数字在 1-99999 之间变化。如果没有格式运算符,我可以像这样突出显示成功行:

Write-Host -BackgroundColor Black -ForegroundColor Green "SUCCESS: Updated user $current/$total: $userCN"

但问题是如何将高亮颜色与格式运算符结合使用?只有-f参数,它不允许颜色参数,因为它Write-Host与最初的不同。

syntax powershell parameter-passing

2
推荐指数
1
解决办法
513
查看次数

标签 统计

powershell ×3

parameter-passing ×1

syntax ×1