所以基本上我想编写一个 Powershell 脚本,它将为 Windows Server Backup 导出最近 1 天的备份日志,将信息格式化为一个漂亮的小表格,然后 SMTP 将其发送到客户本地 Exchange 之外的外部位置。我有一个可以用于此目的的智能主机,以及凭据等。
但我不想将 UN 和 Password 以纯文本形式存储在 Powershell 中,或者让脚本使用纯文本形式的凭据运行。
有没有解决的办法?
干杯!
所以基本上我想编写一个 Powershell 脚本,它将为 Windows Server Backup 导出最近 1 天的备份日志,将信息格式化为一个漂亮的小表格,然后 SMTP 将其发送到客户本地 Exchange 之外的外部位置。我有一个可以用于此目的的智能主机,以及凭据等。
但我不想将 UN 和 Password 以纯文本形式存储在 Powershell 中,或者让脚本使用纯文本形式的凭据运行。
有没有解决的办法?
干杯!
我设法通过将密码作为安全字符串并将其作为“加密标准字符串”保存到名为“ Account.User.pwd”之类的文件中来解决类似问题,其中Account是与关联的帐户的名称密码和用户是生成安全字符串的用户(只有该用户能够解密该文件)。
如果您按照他对上述问题本身的评论中的链接,这与@Keith 使用的方法非常相似。下面的方法更容易遵循,因为它不直接与[System.Runtime.InteropServices.Marshal]
类一起使用。
将密码从文件内容转换回更复杂,但这里有一个逐步完成该过程的示例:
# Create credential object by prompting user for data
$Credential = Get-Credential
# Encrypt the password to disk
$Credential.Password | ConvertFrom-SecureString | Out-File Account.User.pwd
# Now to read it back again...
$SecureString = Get-Content Account.User.pwd | ConvertTo-SecureString
# Create credential object programmatically
$NewCred = New-Object System.Management.Automation.PSCredential("Account",$SecureString)
# Reveal the password!
$NewCred.GetNetworkCredential().Password
关于这种方法的想法:
更多信息: