【发布时间】:2011-06-25 00:59:55
【问题描述】:
在where-object 过滤器脚本中将信息传递到脚本块中是否有比使用父范围变量更好的方法?
背景:
我有一个脚本,用于查找未签入和/或修改的源文件与源代码管理,并有一个参数允许它进行更详尽的搜索。我在几个地方使用了where-object,脚本块对象包含在我根据脚本的输入参数自定义的脚本范围变量中。
因此,如果您要求彻底搜索,过滤器会将候选文件与所有 TFS 文件进行比较,以查看该文件是否不在源代码管理中,如果您选择不太彻底的搜索,过滤器将仅比较对照已签出的文件,查看文件是否已修改但未签出。
自定义脚本块是指脚本范围的变量,其中包含针对源代码管理执行查询的结果。
所以我的问题是我想摆脱一个全局(脚本级)变量,并将所有必要的信息作为脚本块的参数传递到脚本块中。如果我使用invoke-command,我会使用ArgumentList 参数来执行此操作。 Where-Object 似乎没有。在脚本块中使用父范围变量引用的一个缺点是我不能更改这些变量,所以我不能进行延迟初始化(或者至少我还没有弄清楚如何,不是专家Powershell 的范围规则。)
【问题讨论】:
标签: powershell