PowerShell中实现混淆密码示例
适用于PowerShell3.0或者更高版本,
尽管我们并不推荐将密码硬编码在脚本文件中,但是仍旧有一些场景非如此不可。与将密码以一种纯文本的方式硬编码相比,我们还可以稍微花点心思,把密码混淆一下。虽然混淆密码是一种非常低级的保护方式,但是对于不懂PowerShell的人来讲,还是比较神秘的。
接下来的脚本会向用户询问用户名和密码,然后删除通过混淆脚本进行处理,产生用户凭据对象。
当你运行了下面的脚本以后,用户凭据已经被保存在$cred。接下来你几乎可以在任何带有–Credential参数的命令中使用它了。
$cred=Get-Credential-Message'EnterDomain\UsernameandPassword'
$pwd=$cred.Password
$user=$cred.UserName
$key=1..32|ForEach-Object{Get-Random-Maximum256}
$pwdencrypted=$pwd|ConvertFrom-SecureString-Key$key
$private:ofs=''
$generatedScript=@()
$generatedScript+='$password=''{0}'''-f$pwdencrypted
$generatedScript+='$key=''{0}'''-f"$key"
$generatedScript+='$passwordSecure=ConvertTo-SecureString-String$password-Key([Byte[]]$key.Split(''''))'
$generatedScript+='$cred=New-Objectsystem.Management.Automation.PSCredential(''{0}'',$passwordSecure)'-f$user
$generatedScript+='$cred'
$file=$psise.CurrentPowerShellTab.Files.Add()
$file.Editor.Text=$generatedScript|Out-String
$file.Editor.SetCaretPosition(1,1)
产生的密码可能像这样:
$password='76492d1116743f0423413b16050a5345MgB8AHMAUQA3AFAAVwB0AGkAUQBUAC8AdwBqADYAUABVAFYAUwB4AEYAYgB4AFEAPQA9AHwAZgA0ADgAOQA4AGYANwA0AGEAMAA0ADUANwA5ADkAMwA5ADkAMwA1ADUANQA0AGYANwA5AGQANwBkAGYAOQBmAGEAYQA3ADMAYgBkADIAOQA3AGMAYQBmADUAMgA3ADEANwA3AGEAYgBmADAAYgA1AGYAYwAyADYAYgAzADkAOAA='
$key='1879834821485213862462130197217971479875197149246743527721115131931822311713'
$passwordSecure=ConvertTo-SecureString-String$password-Key([Byte[]]$key.Split(''))
$cred=New-Objectsystem.Management.Automation.PSCredential('mickey\mouse',$passwordSecure)
$cred