PowerShell 技能连载 - 参数的智能感知(第 1 部分)
如果输入参数时会为用户建议有效的参数,那岂不是很棒?有时候它们会提示。当您键入以下命令并在 -LogName
之后按空格时,PowerShell ISE 和 Visual Studio Code 会弹出一个 IntelliSense 菜单,其中包含您可以转储的所有日志文件:
1 | PS> Get-EventLog -LogName |
如果没有弹出自动 IntelliSense(换句话说在 PowerShell 控制台中),则可以按 TAB 键自动完成操作,或者按 CTRL + SPACE 手动强制显示 IntelliSense 选择项。
您可以使用自己的 PowerShell 函数执行相同的操作,并且有多种方法可以执行此操作。今天让我们来看一下使用枚举类型的方法。
将枚举类型分配给参数时,它将自动列出可用值。下面的代码使用了 [System.ConsoleColor]
类型,该类型列出了所有有效的控制台颜色:
1 | function Set-ErrorColor |
当您调用 Set-ErrorColor
时,PowerShell 会自动向您建议有效的控制台颜色。当您选择一个时,该函数将此颜色分配给错误前景色。如果您不喜欢粗糙的红色错误颜色,请将错误消息变成绿色以使其更友好:
1 | PS> Set-ErrorColor -Color Green |
旁注:由您来决定对所选类型的处理方式。有时,将其转换为其他类型可能更理想。例如,在上面的示例中,选择的颜色将转换为字符串。为什么呢?
因为只有 PowerShell 控制台窗口支持 ConsoleColor 颜色。而 PowerShell ISE 编辑器等支持更多颜色,并使用 [System.Windows.Media.Color]
类型。
由于可以将字符串转换为这两种类型,但是 ConsoleColor
不能直接转换为 Windows.Media.Color
,因此您可以将其转换为更通用的类型字符串,实现同时在控制台和 PowerShell ISE 中使用用户输入:
1 | # string converts to ConsoleColor |
PowerShell 技能连载 - 参数的智能感知(第 1 部分)
http://blog.vichamp.com/2020/02/12/intellisense-for-parameters-part-1/