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
Du kan skicka en standardkrypterad sträng till den här cmdleten.
Utdata
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.