Как применить шифрование / дешифрование в Powershell? - PullRequest
0 голосов
/ 16 апреля 2019

Я использую в PS следующую команду:

"Password" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString

Это генерирует ключ, который я сохраняю как файл "Key.txt"

Теперь я хочу расшифровать этот пароль, используя это:

$password = Get-Content password.txt (or just copy-pasting the key)
$cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $username,($password | ConvertTo-SecureString)

НО ...

как я могу добавить это к этому ...

$EmailFrom = "MyMail@gmail.com"
$EmailTo = "MayMail@gmail.com" 
$Subject = "Test" 
$Body = "this is a Test" 
$SMTPServer = "smtp.gmail.com" 
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("My_USer", "My_Password"); 
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

Я хочу добавить его как My_Password, конечно, яследует добавить переменную $ password, например, из файла Key.txt, но потом ...?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Нет, хранение в виде простого текста совсем нехорошо, но если вас это не беспокоит, тогда оно есть.

У вас есть другие варианты, с безопасными / зашифрованными файлами и Windows CredMan:

Быстрое и надежное хранение учетных данных - PowerShell

Чтобы получить объект учетных данных, мы можем либо создать его вручную, либо использовать командлет Get-Credential, чтобы запросить данные учетной записи:

$Credential = Get-Credential

Чтобы сохранить учетные данные в файле .cred:

$Credential | Export-CliXml -Path "${env:\userprofile}\Jaap.Cred"

И загрузить учетные данные из файла и обратно в переменную:

$Credential = Import-CliXml -Path "${env:\userprofile}\Jaap.Cred"
Invoke-Command -Computername 'Server01' -Credential $Credential {whoami}

Безопасное хранение учетных данных на диске

Разрешить нескольким пользователям доступ к учетным данным, сохраненным с помощью export-clixml

Как запустить сценарий PowerShell для нескольких доменов Active Directory с разными учетными данными

Диспетчер учетных данных PowerShell CredMan.ps1 - это скрипт PowerShell, который предоставляет доступ к Win32 Credential Manager API, используемому для управления сохраненными учетными данными. https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Credentials-d44c3cde

И модули для использования

https://powershellgallery.com/packages/BetterCredentials https://powershellgallery.com/packages/CredentialManager https://powershellgallery.com/packages/IntelliTect.CredentialManager

0 голосов
/ 16 апреля 2019

Сначала мы сохраняем учетные данные

"Password123" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File C:\key.txt -NoNewline

Тогда мы можем использовать это так:

$SMTPClient = New-Object Net.Mail.SmtpClient("SomeServer", 587)
$SMTPClient.Credentials = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist ThisIsAUserName ,($(Get-Content C:\key.txt) | ConvertTo-SecureString)

И мы можем проверить, правильно ли он загружен, вот так:

$SMTPClient.Credentials | select username, password

Вывод выглядит так

UserName        Password   
--------        --------   
ThisIsAUserName Password123
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...