PowerShell 技能连载 - 用哈希表提高代码可读性
也许你在过去偶然见过这样的代码:
1 | $shell = New-Object -ComObject WScript.Shell |
这段代码打开一个对话框,询问用户是否可以重启计算机。弹出对话框有一个内置超时设置,因此即使在无人值守的情况下运行,代码也不会停止。
但是,由于 PowerShell 使用的是一种旧的 COM 方法,它是由加密的 ID 来控制。用户无法理解 “36” 表示一个带有 YesNo 按钮和问号的对话框。那么如何转义返回的值呢?
哈希表可以以一种简单的方法来包装代码数字,并使代码更具可读性。请看:
1 | $timeoutSeconds = 5 |
多亏了哈希表,代码使用 $buttons.YesNo + $icon.Question
而不是指定 “36”,而且一旦运行了代码(这样就定义了哈希表),甚至可以获得可用选项的智能感知。
同样,通过使用原始返回值作为哈希表的键,可以轻松地将返回代码转换为人类可读的格式。通过这种方式,您可以使用 switch 语句并为用户单击的按钮分配脚本块,而不必知道单个按钮代码。