ConvertTo-SecureString (Microsoft.PowerShell.Security)
ConvertTo-SecureString
- โมดูล :
- Microsoft.PowerShell.Security
แปลงข้อความธรรมดาหรือสตริงที่เข้ารหัสเป็นสตริงที่ปลอดภัย
ไวยากรณ์
ConvertTo-SecureString
[-String] <String>
[[-SecureKey] <SecureString>]
[<CommonParameters>]ConvertTo-SecureString
[-String] <String>
[-AsPlainText]
[-Force]
[<CommonParameters>]ConvertTo-SecureString
[-String] <String>
[-Key <Byte[]>]
[<CommonParameters>]คำอธิบาย
ConvertTo-SecureString cmdlet จะแปลงสตริงมาตรฐานที่เข้ารหัสเป็นสตริงที่ปลอดภัย นอกจากนี้ยังสามารถแปลงข้อความธรรมดาเป็นสตริงที่ปลอดภัยได้ ใช้กับ ConvertFrom-SecureString และ Read-Host สตริงที่ปลอดภัยที่สร้างโดย cmdlet สามารถใช้กับ cmdlet หรือฟังก์ชันที่ต้องใช้พารามิเตอร์ประเภท SecureString สตริงที่ปลอดภัยสามารถแปลงกลับเป็นสตริงมาตรฐานที่เข้ารหัสได้โดยใช้ cmdlet ConvertFrom-SecureString ทำให้สามารถจัดเก็บไว้ในไฟล์เพื่อใช้ในภายหลังได้
หากสตริงมาตรฐานที่กำลังแปลงถูกเข้ารหัสด้วย ConvertFrom-SecureString โดยใช้คีย์ที่ระบุ จะต้องระบุคีย์เดียวกันนั้นเป็นค่าของ คีย์ หรือ SecureKey ของ cmdlet ConvertTo-SecureString
บันทึก
โปรดทราบว่าตาม DotNet เนื้อหาของ SecureString จะไม่ถูกเข้ารหัสบนระบบที่ไม่ใช่ Windows
ตัวอย่าง
ตัวอย่างที่ 1: แปลงสตริงที่ปลอดภัยเป็นสตริงที่เข้ารหัส
ตัวอย่างนี้แสดงวิธีการสร้างสตริงที่ปลอดภัยจากอินพุตของผู้ใช้ แปลงสตริงที่ปลอดภัยเป็นสตริงมาตรฐานที่เข้ารหัส จากนั้นแปลงสตริงมาตรฐานที่เข้ารหัสกลับเป็นสตริงที่ปลอดภัย
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คำสั่งแรกใช้พารามิเตอร์ AsSecureString ของ cmdlet Read-Host เพื่อสร้างสตริงที่ปลอดภัย หลังจากที่คุณป้อนคำสั่ง อักขระใดๆ ที่คุณพิมพ์จะถูกแปลงเป็นสตริงที่ปลอดภัย จากนั้นบันทึกไว้ในตัวแปร $Secure
คำสั่งที่สองแสดงเนื้อหาของตัวแปร $Secure เนื่องจากตัวแปร $Secure มีสตริงที่ปลอดภัย PowerShell จึงแสดงเฉพาะประเภท System.Security.SecureString
คำสั่งที่สามใช้ ConvertFrom-SecureString cmdlet เพื่อแปลงสตริงที่ปลอดภัยในตัวแปร $Secure ให้เป็นสตริงมาตรฐานที่เข้ารหัส โดยจะบันทึกผลลัพธ์ไว้ในตัวแปร $Encrypted
คำสั่งที่สี่แสดงสตริงที่เข้ารหัสในค่าของตัวแปร $Encrypted
คำสั่งที่ห้าใช้ ConvertTo-SecureString cmdlet เพื่อแปลงสตริงมาตรฐานที่เข้ารหัสในตัวแปร $Encrypted กลับเป็นสตริงที่ปลอดภัย โดยจะบันทึกผลลัพธ์ไว้ในตัวแปร $Secure2 คำสั่งที่หกแสดงค่าของตัวแปร $Secure2 ประเภท SecureString บ่งชี้ว่าคำสั่งสำเร็จ
ตัวอย่างที่ 2: สร้างสตริงที่ปลอดภัยจากสตริงที่เข้ารหัสในไฟล์
ตัวอย่างนี้แสดงวิธีสร้างสตริงที่ปลอดภัยจากสตริงมาตรฐานที่เข้ารหัสซึ่งบันทึกไว้ในไฟล์
$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)คำสั่งแรกใช้พารามิเตอร์ AsSecureString ของ cmdlet Read-Host เพื่อสร้างสตริงที่ปลอดภัย หลังจากที่คุณป้อนคำสั่ง อักขระใดๆ ที่คุณพิมพ์จะถูกแปลงเป็นสตริงที่ปลอดภัย จากนั้นบันทึกไว้ในตัวแปร $Secure
คำสั่งที่สองใช้ ConvertFrom-SecureString cmdlet เพื่อแปลงสตริงที่ปลอดภัยในตัวแปร $Secure ให้เป็นสตริงมาตรฐานที่เข้ารหัสโดยใช้คีย์ที่ระบุ เนื้อหาจะถูกบันทึกในตัวแปร $Encrypted
คำสั่งที่สามใช้ตัวดำเนินการไปป์ไลน์ (|) เพื่อส่งค่าของตัวแปร $Encrypted ไปยัง Set-Content cmdlet ซึ่งจะบันทึก ค่าในไฟล์ Encrypted.txt
คำสั่งที่สี่ใช้ Get-Content cmdlet เพื่อรับสตริงมาตรฐานที่เข้ารหัสในไฟล์ Encrypted.txt คำสั่งใช้ตัวดำเนินการไปป์ไลน์เพื่อส่งสตริงที่เข้ารหัสลับไปยัง cmdlet ConvertTo-SecureString ซึ่งจะแปลงเป็นสตริงที่ปลอดภัยโดยใช้คีย์ที่ระบุ ผลลัพธ์จะถูกบันทึกไว้ในตัวแปร $Secure2
ตัวอย่างที่ 3: แปลงสตริงข้อความธรรมดาเป็นสตริงที่ปลอดภัย
คำสั่งนี้จะแปลงสตริงข้อความธรรมดา P@ssW0rD! ให้เป็นสตริงที่ปลอดภัยและจัดเก็บผลลัพธ์ไว้ในตัวแปร $Secure_String_Pwd
เริ่มตั้งแต่ PowerShell 7 เป็นต้นไป ไม่จำเป็นต้องใช้พารามิเตอร์ Force เมื่อใช้พารามิเตอร์ AsPlainText อย่างไรก็ตาม การรวมพารามิเตอร์ Force จะทำให้คำสั่งนี้เข้ากันได้กับเวอร์ชันก่อนหน้า
$Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -Forceคำเตือน
คุณควรหลีกเลี่ยงการใช้สตริงข้อความธรรมดาในสคริปต์หรือจากบรรทัดคำสั่ง ข้อความธรรมดาสามารถแสดงในบันทึกเหตุการณ์และบันทึกประวัติคำสั่ง
พารามิเตอร์
-AsPlainText
ระบุสตริงข้อความธรรมดาที่จะแปลงเป็นสตริงที่ปลอดภัย cmdlet ของสตริงที่ปลอดภัยจะช่วยปกป้องข้อความที่เป็นความลับ ข้อความถูกเข้ารหัสเพื่อความเป็นส่วนตัว และจะถูกลบออกจากหน่วยความจำคอมพิวเตอร์หลังจากใช้งาน หากคุณใช้พารามิเตอร์นี้เพื่อจัดเตรียมข้อความธรรมดาเป็นอินพุต ระบบจะไม่สามารถป้องกันอินพุตนั้นในลักษณะนี้ได้
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
1
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
-
False
- ยอมรับอักขระตัวแทน:
False
-Force
เริ่มตั้งแต่ PowerShell 7 เป็นต้นไป พารามิเตอร์ Force ไม่จำเป็นอีกต่อไปเมื่อใช้พารามิเตอร์ AsPlainText แม้ว่าจะไม่ได้ใช้พารามิเตอร์ แต่ก็ไม่ได้ถูกเอาออกเพื่อให้เข้ากันได้กับ PowerShell เวอร์ชันก่อนหน้า
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
2
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Key
ระบุคีย์เข้ารหัสที่ใช้ในการแปลงสตริงความปลอดภัยดั้งเดิมเป็นสตริงมาตรฐานที่เข้ารหัส ความยาวของคีย์ที่ถูกต้องคือ 16, 24 และ 32 ไบต์
- พิมพ์ :
ไบต์[]
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-SecureKey
ระบุคีย์เข้ารหัสที่ใช้ในการแปลงสตริงความปลอดภัยดั้งเดิมเป็นสตริงมาตรฐานที่เข้ารหัส ต้องระบุคีย์ในรูปแบบของสตริงที่ปลอดภัย สตริงที่ปลอดภัยจะถูกแปลงเป็นอาร์เรย์ไบต์เพื่อใช้เป็นคีย์ ความยาวของคีย์ความปลอดภัยที่ถูกต้องคือ 8, 12 และ 16 จุดโค้ด
- พิมพ์ :
SecureString
- ตำแหน่ง:
1
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-String
ระบุสตริงที่จะแปลงเป็นสตริงที่ปลอดภัย
- พิมพ์ :
String
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
อินพุต
สตริง
คุณสามารถไพพ์สตริงที่เข้ารหัสมาตรฐานไปที่ cmdlet นี้
เอาท์พุต
สตริงที่ปลอดภัย
cmdlet นี้ส่งคืนวัตถุ SecureString ที่สร้างขึ้น
หมายเหตุ
อักขระบางตัว เช่น อิโมติคอน สอดคล้องกับจุดโค้ดหลายจุดในสตริงที่มีอักขระเหล่านั้น หลีกเลี่ยงการใช้อักขระเหล่านี้เนื่องจากอาจทำให้เกิดปัญหาและความเข้าใจผิดเมื่อใช้เป็นรหัสผ่าน