Powershell: как подключиться к сетевой папке в другом домене с сохраненным незашифрованным именем пользователя / паролем - PullRequest
5 голосов
/ 11 января 2011

Я пытаюсь подключиться к общему сетевому ресурсу через powershell.Общий сетевой ресурс находится в другом домене, поэтому мне нужно предоставить учетные данные.Так как New-PSDrive не поддерживает учетные данные, я собирался использовать net use , но меня беспокоит возможность ввода моего имени пользователя / пароля прямо в текстовом виде в сценарий.Я заставил ConvertTo-SecureString создать безопасную строку из моего пароля, а затем использовал ConvertFrom-SecureString и сохранил результат в файле.Затем я вытащил его из файла и попытался net use :

$password = Get-Content <locationOfStoredPasswordFile> | ConvertTo-SecureString
net use q: "\\server\share" $password /user:domain\username

Но net use не распознает защищенную строку.

У кого-нибудь есть идеи о том, как хранить учетные данные, чтобы net use мог их использовать?Спасибо!

1 Ответ

7 голосов
/ 11 января 2011

Вот две функции, которые я использую для шифрования / дешифрования строк.Они были адаптированы из поста powershell.com, но у меня нет удобной ссылки.Идея состоит в том, что ваш файл паролей будет хранить выходные данные Protect-String, а затем преобразовывать обратно в обычную строку, читать в файле и вызывать UnProtect-String, это значение, возвращаемое из строки UnProtect, будет вашей переменной $ password.

#######################
function Protect-String 
{
    param([string]$InputString)
    $secure = ConvertTo-SecureString $InputString -asPlainText -force
    $export = $secure | ConvertFrom-SecureString
    write-output $export

} #Protect-String

#######################
function UnProtect-String 
{
    param([string]$InputString)

    $secure = ConvertTo-SecureString $InputString
    $helper = New-Object system.Management.Automation.PSCredential("SQLPSX", $secure)
    $plain = $helper.GetNetworkCredential().Password
    write-output $plain

} #UnProtect-String
...