2011-01-11 15 views
5

Próbuję połączyć się z udziałem sieciowym za pomocą programu powershell. Udział sieciowy znajduje się w innej domenie, więc muszę podać dane uwierzytelniające. Od New-PSDrive nie obsługuje poświadczeń, miałem zamiar użyć używać netto, ale martwię się o umieszczenie mojej nazwy użytkownika/hasła w tym samym miejscu w skrypcie. Zmusiłem ConvertTo-SecureString do utworzenia bezpiecznego ciągu z mojego hasła, a następnie użycia ConvertFrom-SecureString i zapisałem wynik w pliku. Potem wyciągnął go z pliku tak i próbował net use:Powershell: Jak połączyć się z folderem sieciowym w innej domenie z nazwą użytkownika/hasłem przechowywanym poza zwykłym tekstem?

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

Ale net use nie rozpoznaje bezpieczny ciąg.

Ktoś ma jakieś pomysły na przechowywanie poświadczeń, aby używał ich do sieci? Dzięki!

Odpowiedz

7

Oto dwie funkcje, których używam do szyfrowania/odszyfrowywania ciągów. Zostały one zaadaptowane z postu na stronie powershell.com, ale nie mam do niego dostępu. Chodzi o to, że twój plik haseł przechowa dane wyjściowe Protect-String, a następnie powróci do zwykłego ciągu znaków, wczyta plik i wywoła UnProtect-String, a wartość zwrócona przez UnProtect będzie zmienną $ 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 
+1

Genialny, działa. Dziękuję Ci bardzo! – Jeshii

Powiązane problemy