windows - Ændring af lokaladministratoradgangskode ved hjælp af krypteret Password.txt

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at opdatere en lokal administratorkonto adgangskode. Jeg vil ikke sende adgangskoden i almindelig tekst, så jeg fandt en workflow (https://www.pdq.com/blog/secure-password-with-powershell -crypting-credentials-part-2/), som vil tillade mig at kryptere PW 's. [8]


#Change password for TestAccount
$User = 'TestAccount'
$PasswordFile = "$PsScriptRootPassword.txt"
$KeyFile = "$PsScriptRootAES.key"
$key = Get-Content $KeyFile
$MyCredential = New-Object -TypeName System.Management.Automation.PSCredential ` -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $key)

$adsiUser = [adsi]"WinNT://localhost/$User,user"
$adsiUser.SetPassword($MyCredential.Password)


Jeg har modtaget fejlen


Exception calling "SetPassword" with "1" argument(s): "Type mismatch. 
(Exception from HRESULT: 0x80020005 (DISP\_E\_TYPEMISMATCH))"


Så min google-fu tillod mig at dekryptere adgangskoden med


$decodedpassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($MyCredential.Password))


Men nu er der et spor af cookies i mit script ... er der nogen måde at videregive dette som en Secure String?


Tak,
Paul

Bedste reference


Brug den indbyggede metode GetNetworkCredential() for at få almindelig tekstadgangskode fra Credential Object


Så Skift denne linje:


$adsiUser.SetPassword($MyCredential.Password)


Til dette:


$adsiUser.SetPassword($MyCredential.GetNetworkCredential().Password)


For kort legitimation Gem/læs vejledning:


#To Save Credential to file
$pass = "123456" | ConvertTo-SecureString -AsPlainText -Force
$pass | ConvertFrom-SecureString | Set-Content c:	emppass.txt

#To Load Credential From Text
$username = "userName"
$encrypted = Get-Content c:	emppass.txt | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential($username, $encrypted) 

#To Show the Plain text Password from the Credential Object
$credential.GetNetworkCredential().Password