ค้นหาเว็บไซต์

วิธีแปลงสตริงเป็น 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 สำหรับพารามิเตอร์คำสั่ง

ฉันหวังว่านี่จะช่วยได้

บทความที่เกี่ยวข้อง