วิธีแปลงสตริงเป็น Hashtable ใน PowerShell
เมื่อเร็วๆ นี้ ฉันได้รับข้อกำหนดในการแปลงสตริงเป็นแฮชเทเบิลใน PowerShell ฉันลองวิธีการต่างๆ ในบทช่วยสอนนี้ ฉันจะแสดงวิธีแปลงสตริงเป็น hashtable ใน PowerShell
หากต้องการแปลงสตริงเป็นแฮชเทเบิลใน PowerShell คุณสามารถใช้ ConvertFrom-StringData cmdlet cmdlet นี้แปลงสตริงที่มีคู่คีย์-ค่า โดยแต่ละคู่อยู่บนบรรทัดที่แยกจากกันให้เป็นแฮชเทเบิล ตัวอย่างเช่น คุณสามารถแปลงสตริง “key1=value1nkey2=value2” ได้โดยใช้ ConvertFrom-StringData “key1=value1nkey2=value2” เพื่อสร้างแฮชเทเบิลที่มีคีย์ “key1” และ “key2”
แปลงสตริงเป็น Hashtable ใน PowerShell
มีวิธีการต่างๆ ในการแปลงสตริงเป็น hashtable ใน PowerShell ฉันขอแสดงตัวอย่างให้คุณดู
วิธีที่ 1: การใช้ ConvertFrom-StringData
ConvertFrom-StringData cmdlet เป็นวิธีที่ดีที่สุดในการแปลงสตริงที่มีคู่คีย์-ค่าให้เป็นแฮชเทเบิลใน PowerShell คู่คีย์-ค่าแต่ละคู่ต้องอยู่ในบรรทัดของตัวเอง โดยคั่นด้วยเครื่องหมายเท่ากับ (=)
นี่คือตัวอย่างวิธีการแปลงสตริงเป็นแฮชเทเบิลใน PowerShell โดยใช้ ConvertFrom-StringData
# Define a string with key-value pairs
$stringData = @"
Name=John Doe
Age=30
City=New York
"@
# Convert the string to a hashtable
$hashtable = ConvertFrom-StringData $stringData
# Display the hashtable
$hashtable
ในตัวอย่างนี้ ตัวแปร $stringData มีสตริงหลายบรรทัดที่มีคู่คีย์-ค่า ConvertFrom-StringData cmdlet จะแปลงสตริงนี้เป็น hashtable จากนั้นคุณจึงสามารถเข้าถึงค่าต่างๆ ได้โดยใช้คีย์ เช่น $hashtable['Name']
ฉันรันสคริปต์ PowerShell ด้านบนโดยใช้โค้ด VS และคุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:
ตรวจสอบวิธีการแปลงสตริงเป็นวัตถุใน PowerShell
วิธีที่ 2: การใช้ ConvertFrom-Json
หากสตริงของคุณอยู่ในรูปแบบ JSON คุณสามารถใช้ ConvertFrom-Json cmdlet เพื่อแปลงเป็น hashtable JSON เป็นรูปแบบทั่วไปสำหรับการแลกเปลี่ยนข้อมูล และ PowerShell ให้การสนับสนุนดั้งเดิม
นี่คือตัวอย่างวิธีใช้ ConvertFrom-Json เพื่อแปลงสตริงเป็น hashtable ใน PowerShell
# Define a JSON string
$jsonString = '{"Name": "John Doe", "Age": 30, "City": "New York"}'
# Convert the JSON string to a hashtable
$hashtable = $jsonString | ConvertFrom-Json
# Display the hashtable
$hashtableในตัวอย่างนี้ ตัวแปร $jsonString มีสตริง JSON พร้อมคู่คีย์-ค่า ConvertFrom-Json cmdlet จะแปลงสตริงนี้เป็น hashtable
คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่างหลังจากที่ฉันรันสคริปต์ PowerShell ด้านบน
อ่านวิธีเขียน JSON ลงในไฟล์ใน PowerShell
วิธีที่ 3: การใช้การแยกวิเคราะห์แบบกำหนดเอง
สำหรับรูปแบบสตริงที่ซับซ้อนหรือกำหนดเองมากขึ้น คุณอาจต้องแยกวิเคราะห์สตริงและสร้างแฮชเทเบิลด้วยตนเอง วิธีนี้จะมีความยืดหยุ่นแต่ต้องใช้โค้ดเพิ่มเติม
นี่คือตัวอย่าง
# Define a custom string with key-value pairs
$customString = "Name:John Doe;Age:30;City:New York"
# Split the string into individual key-value pairs
$pairs = $customString -split ';'
# Initialize an empty hashtable
$hashtable = @{}
# Iterate over each pair and add it to the hashtable
foreach ($pair in $pairs) {
$key, $value = $pair -split ':'
$hashtable[$key] = $value
}
# Display the hashtable
$hashtableในตัวอย่างนี้ ตัวแปร $customString มีสตริงที่จัดรูปแบบแบบกำหนดเอง สตริงจะถูกแบ่งออกเป็นคู่คีย์-ค่าแต่ละคู่โดยใช้ตัวดำเนินการ -split จากนั้นแต่ละคู่จะถูกเพิ่มลงใน hashtable
ตรวจสอบผลลัพธ์ในภาพหน้าจอด้านล่าง:
อ่านแปลงสตริงเป็น Int ใน PowerShell
วิธีที่ 4: การใช้ Splatting สำหรับพารามิเตอร์คำสั่ง
Splatting เป็นฟีเจอร์ใน PowerShell ที่ให้คุณส่งพารามิเตอร์ไปยังคำสั่งในรูปแบบแฮชได้ วิธีนี้จะมีประโยชน์เมื่อคุณต้องการแปลงสตริงเป็น hashtable เพื่อใช้เป็นพารามิเตอร์คำสั่ง
นี่คือตัวอย่าง
# Define a string with command parameters
$paramString = "Name=John Doe;Age=30;City=New York"
# Split the string into individual key-value pairs
$pairs = $paramString -split ';'
# Initialize an empty hashtable
$hashtable = @{}
# Iterate over each pair and add it to the hashtable
foreach ($pair in $pairs) {
$key, $value = $pair -split '='
$hashtable[$key] = $value
}
# Use the hashtable for splatting
Get-UserDetails @hashtableในตัวอย่างนี้ ตัวแปร $paramString มีสตริงที่มีพารามิเตอร์คำสั่ง สตริงจะถูกแบ่งออกเป็นคู่คีย์-ค่าแต่ละคู่ ซึ่งจากนั้นจะถูกเพิ่มลงในแฮชเทเบิ้ล hashtable ใช้สำหรับการแบ่งพารามิเตอร์เพื่อส่งผ่านพารามิเตอร์ไปยังคำสั่ง Get-UserDetails
บทสรุป
ในบทช่วยสอนนี้ ฉันได้อธิบายวิธีแปลงสตริงเป็นแฮชเทเบิลใน PowerShell โดยใช้วิธีต่างๆ เช่น ConvertFrom-StringData, ConvertFrom-Json, Custom Parsing และ Splatting สำหรับพารามิเตอร์คำสั่ง
ฉันหวังว่านี่จะช่วยได้


