gpt4 book ai didi

带有参数化脚本 block 的 PowerShell 函数

转载 作者:行者123 更新时间:2023-12-04 11:10:16 24 4
gpt4 key购买 nike

我想创建一个枚举一些数据的 PowerShell 函数,并在所有出现时触发一个脚本 block 。

现在我有(这不是实际的代码,但它说明了我的问题):

function Invoke-TenTimes
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true, Position=0)]
[ScriptBlock]$Action
)
process
{
$digits = 0..10
$digits | % {
$Action.Invoke($_);
}
}
}

我把这个函数放在我的模块中。但是,当我打电话时我没有得到任何结果:
Invoke-TenTimes { $_ }

输出为空白(不显示任何内容)。

如果我打电话
Invoke-TenTimes { $_ -eq $null }

我得到十个 true .事实上,我看到 $_一片空白。

填充 $_ 的正确方法是什么? ?

让我发疯的是,如果我将此函数和调用放在同一个 ps1 文件中,它可以工作(但我想按需传递脚本 block ):
function Invoke-TenTimes
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true, Position=0)]
[ScriptBlock]$Action
)
process
{
$digits = 0..10
$digits | % {
$Action.Invoke($_);
}
}
}


Invoke-TenTimes { $_ }

最佳答案

开始了:

$scriptblock = {param($number) Write-Host "Current Number is $number"} 

function Invoke-TenTimes
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true, Position=0)]
[ScriptBlock]$Action
)
$digits = 1..10
$digits | ForEach-Object{Invoke-Command -ScriptBlock $Action -Args $_}
}

采用:
Invoke-TenTimes $scriptblock

关于带有参数化脚本 block 的 PowerShell 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12688238/

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