PowerShell 技能连载 - 将 PowerShell 脚本作为命令(第 2 部分)

在上一个技能中,我们讨论了一种扩展 PowerShell 命令集的简易方法。通过将脚本保存到一个文件夹中,并且将文件夹添加到环境变量 $env:path 中,PowerShell 将会识别出该文件夹中的所有脚本并将它们作为新命令。

PowerShell 脚本支持和函数相同的用户参数机制。让我们看看如何将一个使用参数的新的基于脚本的命令加入 PowerShell。

将以下脚本保存到 c:\myPsCommands 目录中的 “New-Password.ps1”。您可能需要先创建该文件夹。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[CmdletBinding()]
param
(
$CapitalLetter = 4,
$Numeric = 1,
$LowerLetter = 3,
$Special = 2
)

$characters = & {
'ABCDEFGHKLMNPRSTUVWXYZ' -as [char[]] |
Get-Random -Count $CapitalLetter

'23456789'.ToCharArray() |
Get-Random -Count $Numeric

'abcdefghkmnprstuvwxyz'.ToCharArray() |
Get-Random -Count $LowerLetter

'§$%&?=#*+-'.ToCharArray() |
Get-Random -Count $Special

} | Sort-Object -Property { Get-Random }
$characters -join ''

下一步,将文件夹路径添加到 PowerShell 的命令搜索路径,例如运行这段代码:

1
PS> $env:path += ";c:\myPSCommands"

现在您可以想普通命令一样运行存储在文件夹中的任意脚本。如果脚本的开始处有 param() 块,那么支持传入参数。当您按示例操作后,就可以得到一个名为 New-Password 的命令,用来生成复杂密码,以及通过参数帮您组合密码:

1
2
PS> New-Password -CapitalLetter 2 -Numeric 1 -LowerLetter 8 -Special 2
yx+nKfph?M8rw

PowerShell 技能连载 - 将 PowerShell 脚本作为命令(第 2 部分)

http://blog.vichamp.com/2023/01/31/using-powershell-scripts-as-commands-part-2/

作者

吴波

发布于

2023-01-31

更新于

2024-03-29

许可协议

评论