在使用运行空间时,我想从外部将可预测的参数传递给我的scriptblock。为了在不使用 $ args 的情况下执行此操作(以避免使代码更不可读),我将我的参数存储在名为 $ var 的变量中,并将变量添加到RunspacePool的InitialSessionState。为此,我使用了Add
System.Management.Automation.Runspaces.InitialSessionState.Create().Variables
方法
这适用于我的目的,但我也注意到PowerShell.AddParameter
的{{1}}方法,它会在创建时为每个PowerShell进程添加我的参数。
最后我可以使用[PowerShell]::Create()
PowerShell.AddArgument
,并使用AddParameter
块。这可行,但是,每个参数将按顺序传递,并且最终工作以及 $ args 。
所以我的问题是为了我定义的目的,将参数\参数\变量传递到一个脚本块的推荐方法是什么?一个在另一个上有性能优势吗?你可以扩展一个用户的目的吗?
答案 0 :(得分:1)
您可以在脚本块定义中使用cmdlet绑定。
$ScriptBlock = {
Param (
[int]$NumberofHours,
[string]$ClientName
)
$LogPath = 'd:\Program Files\Exchange\Logging\RPC Client Access\*.LOG'
$today = (Get-Date).AddHours($NumberofHours)
}
然后在执行脚本块时定义调用这些参数。
Invoke-Command -ComputerName $servers -ScriptBlock $ScriptBlock -ArgumentList -1,$cn -ErrorAction SilentlyContinue