Share via


ConvertTo-SecureString

Konverterar oformaterad text eller krypterade strängar till säkra strängar.

Syntax

ConvertTo-SecureString
              [-String] <String>
              [[-SecureKey] <SecureString>]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-AsPlainText]
              [-Force]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-Key <Byte[]>]
              [<CommonParameters>]

Description

Cmdleten ConvertTo-SecureString konverterar krypterade standardsträngar till säkra strängar. Den kan också konvertera oformaterad text till säkra strängar. Den används med ConvertFrom-SecureString och Read-Host. Den säkra sträng som skapas av cmdleten kan användas med cmdletar eller funktioner som kräver en parameter av typen SecureString. Den säkra strängen kan konverteras tillbaka till en krypterad standardsträng med hjälp av cmdleten ConvertFrom-SecureString . Detta gör att den kan lagras i en fil för senare användning.

Om standardsträngen som konverteras krypterades med ConvertFrom-SecureString en angiven nyckel måste samma nyckel anges som värdet för parametern Key eller SecureKey för cmdleten ConvertTo-SecureString .

Kommentar

Observera att innehållet i en SecureString per DotNet inte krypteras på andra system än Windows.

Exempel

Exempel 1: Konvertera en säker sträng till en krypterad sträng

Det här exemplet visar hur du skapar en säker sträng från användarindata, konverterar den säkra strängen till en krypterad standardsträng och sedan konverterar den krypterade standardsträngen tillbaka till en säker sträng.

PS C:\> $Secure = Read-Host -AsSecureString
PS C:\> $Secure
System.Security.SecureString
PS C:\> $Encrypted = ConvertFrom-SecureString -SecureString $Secure
PS C:\> $Encrypted
01000000d08c9ddf0115d1118c7a00c04fc297eb010000001a114d45b8dd3f4aa11ad7c0abdae98000000000
02000000000003660000a8000000100000005df63cea84bfb7d70bd6842e7efa79820000000004800000a000
000010000000f10cd0f4a99a8d5814d94e0687d7430b100000008bf11f1960158405b2779613e9352c6d1400
0000e6b7bf46a9d485ff211b9b2a2df3bd6eb67aae41
PS C:\> $Secure2 = ConvertTo-SecureString -String $Encrypted
PS C:\> $Secure2
System.Security.SecureString

Det första kommandot använder parametern AsSecureString för cmdleten Read-Host för att skapa en säker sträng. När du har angett kommandot konverteras alla tecken som du skriver till en säker sträng och sparas sedan i variabeln $Secure .

Det andra kommandot visar innehållet i variabeln $Secure . Eftersom variabeln $Secure innehåller en säker sträng visar PowerShell endast typen System.Security.SecureString .

Det tredje kommandot använder cmdleten ConvertFrom-SecureString för att konvertera den säkra strängen i variabeln $Secure till en krypterad standardsträng. Det sparar resultatet i variabeln $Encrypted .

Det fjärde kommandot visar den krypterade strängen i variabelns $Encrypted värde.

Det femte kommandot använder cmdleten ConvertTo-SecureString för att konvertera den krypterade standardsträngen i variabeln $Encrypted tillbaka till en säker sträng. Det sparar resultatet i variabeln $Secure2 . Det sjätte kommandot visar variabelns $Secure2 värde. Typen SecureString anger att kommandot lyckades.

Exempel 2: Skapa en säker sträng från en krypterad sträng i en fil

Det här exemplet visar hur du skapar en säker sträng från en krypterad standardsträng som sparas i en fil.

$Secure = Read-Host -AsSecureString
$Encrypted = ConvertFrom-SecureString -SecureString $Secure -Key (1..16)
$Encrypted | Set-Content Encrypted.txt
$Secure2 = Get-Content Encrypted.txt | ConvertTo-SecureString -Key (1..16)

Det första kommandot använder parametern AsSecureString för cmdleten Read-Host för att skapa en säker sträng. När du har angett kommandot konverteras alla tecken som du skriver till en säker sträng och sparas sedan i variabeln $Secure .

Det andra kommandot använder cmdleten ConvertFrom-SecureString för att konvertera den säkra strängen i variabeln $Secure till en krypterad standardsträng med hjälp av den angivna nyckeln. Innehållet sparas i variabeln $Encrypted .

Det tredje kommandot använder en pipelineoperator (|) för att skicka värdet för variabeln $Encrypted till cmdleten Set-Content , vilket sparar värdet i filen Encrypted.txt.

Det fjärde kommandot använder cmdleten Get-Content för att hämta den krypterade standardsträngen i filen Encrypted.txt. Kommandot använder en pipelineoperator för att skicka den krypterade strängen till cmdleten ConvertTo-SecureString , som konverterar den till en säker sträng med hjälp av den angivna nyckeln. Resultatet sparas i variabeln $Secure2 .

Exempel 3: Konvertera en oformaterad textsträng till en säker sträng

Det här kommandot konverterar strängen oformaterad text P@ssW0rD! till en säker sträng och lagrar resultatet i variabeln $Secure_String_Pwd .

Från och med PowerShell 7 krävs inte force-parametern när du använder parametern AsPlainText. Men om du inkluderar force-parametern ser du till att -instruktionen är kompatibel med tidigare versioner.

$Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -Force

Varning

Du bör undvika att använda oformaterade textsträngar i skript eller från kommandoraden. Oformaterad text kan visas i händelseloggar och kommandohistorikloggar.

Parametrar

-AsPlainText

Anger en oformaterad textsträng som ska konverteras till en säker sträng. Cmdletarna för säker sträng skyddar konfidentiell text. Texten krypteras för sekretess och tas bort från datorminnet när den har använts. Om du använder den här parametern för att ange oformaterad text som indata kan systemet inte skydda indata på det här sättet.

Type:SwitchParameter
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Från och med PowerShell 7 krävs inte längre force-parametern när du använder parametern AsPlainText. Även om parametern inte används har den inte tagits bort för att ge kompatibilitet med tidigare versioner av PowerShell.

Type:SwitchParameter
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Key

Anger krypteringsnyckeln som används för att konvertera den ursprungliga säkra strängen till den krypterade standardsträngen. Giltiga nyckellängder är 16, 24 och 32 byte.

Type:Byte[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SecureKey

Anger krypteringsnyckeln som används för att konvertera den ursprungliga säkra strängen till den krypterade standardsträngen. Nyckeln måste anges i formatet för en säker sträng. Den säkra strängen konverteras till en bytematris som ska användas som nyckel. Giltiga säkra nyckellängder är 8, 12 och 16 kodpunkter.

Type:SecureString
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-String

Anger strängen som ska konverteras till en säker sträng.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Indata

String

Du kan skicka en standardkrypterad sträng till den här cmdleten.

Utdata

SecureString

Den här cmdleten returnerar det skapade SecureString-objektet .

Kommentarer

Vissa tecken, till exempel uttryckssymboler, motsvarar flera kodpunkter i strängen som innehåller dem. Undvik att använda dessa tecken eftersom de kan orsaka problem och missförstånd när de används i ett lösenord.