所以基本上我想要寫一個PowerShell腳本將出口價值爲Windows服務器備份備份日誌的最後1天,格式化信息成一個可愛的小桌子,然後SMTP發送它到客戶本地Exchange外部的外部位置。我有一個可用於此目的的智能主機,以及憑證等。我如何避免保存用戶名和密碼在PowerShell腳本
但我不想以純文本形式在Powershell中存儲UN和密碼,或讓腳本以純文本形式運行憑據。
有沒有辦法解決這個問題?
乾杯!
所以基本上我想要寫一個PowerShell腳本將出口價值爲Windows服務器備份備份日誌的最後1天,格式化信息成一個可愛的小桌子,然後SMTP發送它到客戶本地Exchange外部的外部位置。我有一個可用於此目的的智能主機,以及憑證等。我如何避免保存用戶名和密碼在PowerShell腳本
但我不想以純文本形式在Powershell中存儲UN和密碼,或讓腳本以純文本形式運行憑據。
有沒有辦法解決這個問題?
乾杯!
我設法通過採取密碼作爲安全字符串,並將其保存,作爲一個「加密的標準字符串」到一個文件名爲類似避開類似的問題「帳戶。用戶 .pwd」,其中帳戶是與密碼關聯的帳戶的名稱,並且用戶是生成安全字符串的用戶(只有該用戶才能夠解密該文件)。
這非常類似於@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
思考這個辦法:
的更多信息:
你打算如何運行它?手動,作爲計劃任務?有了手冊,你可以要求輸入(並使用'-assecurestring'來「隱藏」密碼輸入)。使用任務計劃程序,您可以分配憑據來運行作業/任務,因此只需在配置時輸入您的帳戶信息即可。考慮創建一個非個人帳戶,對這樣的腳本擁有有限權限。 –
請參閱此SO問題的答案:http://stackoverflow.com/questions/13842611/how-to-pass-credentials-to-rename-command/13844113#13844113 –