当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 为 Active Directory 生成密码——重温

作者:精品下载站 日期:2024-12-14 07:15:43 浏览:16 分类:玩电脑

为 Active Directory 生成密码——重温


很久以前我曾经写过一篇关于如何生成符合 Active Directory 复杂性规则的随机密码的文章。我在 TechNet Gallery 上的脚本现已获得超过 2000 次下载,我认为可能是时候重新审视该主题并进行一些更新了。首先,我刚刚更新了脚本,主要是为了更好的性能。

我还意识到,一种常见的情况是用户致电服务台询问新密码。在这些情况下,密码通常是口头拼写给用户的,这可能会导致混乱和误解。因此,我编写了一个简单的函数,可以用语音拼出密码。为此,我需要一本字典,我选择了存储在哈希表中的北约拼音字母表,因为只要查找值是唯一的,哈希表就非常适合快速进行查找。

[HashTable]$PhoneticTable = @{
    'a' = 'alfa'    ;'b' = 'bravo'   ;'c' = 'charlie';'d' = 'delta';
    'e' = 'echo'    ;'f' = 'foxtrot' ;'g' = 'golf'   ;'h' = 'hotel';
    'i' = 'india'   ;'j' = 'juliett' ;'k' = 'kilo'   ;'l' = 'lima' ;
    'm' = 'mike'    ;'n' = 'november';'o' = 'oscar'  ;'p' = 'papa' ;
    'q' = 'quebec'  ;'r' = 'romeo'   ;'s' = 'sierra' ;'t' = 'tango';
    'u' = 'uniform' ;'v' = 'victor'  ;'w' = 'whiskey';'x' = 'x-ray';
    'y' = 'yankee'  ;'z' = 'zulu'    ;'0' = 'Zero'   ;'1' = 'One'  ;
    '2' = 'Two'     ;'3' = 'Three'   ;'4' = 'Four'   ;'5' = 'Five' ;
    '6' = 'Six'     ;'7' = 'Seven'   ;'8' = 'Eight'  ;'9' = 'Niner';
    '.' = 'Point'   ;'!' = 'Exlamationmark';'?' = 'Questionmark';
}

我还将其设置为参数,以便可以轻松更改。另一个参数是 -Char,它需要一个按语音拼写的字符数组。如果您有一个字符串也可以工作,因为为参数指定类型将使 PowerShell 尝试将分配给该参数的任何内容转换为该类型。由于 -Char 的类型为 [char[]](字符数组),因此字符串可以很好地转换为字符数组。如果转换失败,该命令将不会运行。

该函数将为数组中的每个字符循环一次。

首先,循环将使用 ContainsKey 方法检查该字符是否在哈希表中列出。此方法将一个对象作为输入,检查是否有与该对象匹配的键并返回 true 或 false。

if($PhoneticTable.ContainsKey("$Character"))

如果该字符列在 $PhoneticTable 中,我使用静态方法 IsUpper 来检查该字符是否为大写(这只会针对大写字母返回 true)。大写字符也会使拼音单词转换为大写。

if([Char]::IsUpper([Char]$Character))

然后将具有两个属性(Char 和 Phonetic)的 PSCustomObject 输出到变量。

最后,我使用字符串格式化运算符 (-f) 来创建结果文本:

"`n{0}`n{1}" -f ('Input text: {0}'-f-join$Char), ($Result | Format-Table -AutoSize | Out-String)

以下是我如何生成密码并将其拼写出来的示例:

[玩转系统] 为 Active Directory 生成密码——重温

完整脚本可在此处获取:https://gallery.technet.microsoft.com/Get-NATO-phonetic-spelling-c72c7cf8

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯