PowerShell 技能连载 - 动态参数完成(第 1 部分)
在前面的技巧中,我们介绍了将参数完成符添加到参数的各种方法。一种方法是使用 [ArgumentCompleter] 属性,如下所示:如您所见,这仅是完善补全代码的问题:当文件名包含空格时,表达式放在引号内,否则不用。如果希望完成者仅返回文件并忽略文件夹,则将 -File 参数添加到 Get-ChildItem。
1 | function Get-File { |
本质上,运行此代码然后调用 Get-File 时,一旦使用 -FileName 参数,就可以按 TAB 或 CTRL + SPACE 自动列出 Windows 文件夹中所有文件的文件名。 PowerShell执行 [ArgumentCompleter] 中定义的脚本块以动态计算出自动完成的列表。
有一个反馈称,完成后,这些值需要检查特殊字符(例如空格),并在必要时用引号将它包裹起来。让我们听取这些反馈意见,看看如何改进自动完成代码:
1 | function Get-File { |
如您所见,这完全是完善补全代码的问题:当文件名包含空格时,表达式需要放在引号内,否则就不需要。如果希望完成者仅返回文件并忽略文件夹,则将 -File 参数添加到 Get-ChildItem。
PowerShell 技能连载 - 动态参数完成(第 1 部分)
http://blog.vichamp.com/2020/03/09/dynamic-argument-completion-part-1/

