ฉันเคยเห็นสัญลักษณ์ @ ที่ใช้ใน PowerShell เพื่อเริ่มต้นอาร์เรย์ สัญลักษณ์ @ หมายถึงอะไรและฉันจะอ่านเพิ่มเติมได้ที่ไหน
ฉันเคยเห็นสัญลักษณ์ @ ที่ใช้ใน PowerShell เพื่อเริ่มต้นอาร์เรย์ สัญลักษณ์ @ หมายถึงอะไรและฉันจะอ่านเพิ่มเติมได้ที่ไหน
คำตอบ:
PowerShell จะถือว่ารายการที่คั่นด้วยจุลภาคเป็นอาร์เรย์:
"server1","server2"
ดังนั้น @ จึงเป็นทางเลือกในกรณีเหล่านั้น อย่างไรก็ตามสำหรับอาร์เรย์ที่เชื่อมโยงต้องมี @:
@{"Key"="Value";"Key2"="Value2"}
อย่างเป็นทางการ @ คือ "ตัวดำเนินการอาร์เรย์" คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในเอกสารที่ติดตั้งพร้อมกับ PowerShell หรือในหนังสือเช่น "Windows PowerShell: TFM" ซึ่งฉันร่วมเขียน
ใน PowerShell V2 @ นอกจากนั้นยังมีผู้ประกอบการ Splat
PS> # First use it to create a hashtable of parameters:
PS> $params = @{path = "c:\temp"; Recurse= $true}
PS> # Then use it to SPLAT the parameters - which is to say to expand a hash table
PS> # into a set of command line parameters.
PS> dir @params
PS> # That was the equivalent of:
PS> dir -Path c:\temp -Recurse:$true
แม้ว่าคำตอบข้างต้นจะให้คำตอบส่วนใหญ่แต่ก็มีประโยชน์แม้ในช่วงท้ายของคำถามนี้ - เพื่อให้คำตอบที่สมบูรณ์เพื่อเป็นปัญญา:
นิพจน์ย่อยของอาร์เรย์ (ดูabout_arrays )
บังคับให้ค่าเป็นอาร์เรย์แม้ว่าซิงเกิลตันหรือค่าว่างเช่น $a = @(ps | where name -like 'foo')
เครื่องมือเริ่มต้นแฮช (ดูabout_hash_tables )
เริ่มต้นตารางแฮชด้วยคู่คีย์ - ค่าเช่น
$HashArguments = @{ Path = "test.txt"; Destination = "test2.txt"; WhatIf = $true }
Splatting (ดูabout_splatting )
ให้คุณเรียกใช้ cmdlet ด้วยพารามิเตอร์จากอาร์เรย์หรือตารางแฮชแทนที่จะเป็นพารามิเตอร์ที่แจกแจงทีละรายการตามธรรมเนียมเช่นการใช้ตารางแฮชด้านบน Copy-Item @HashArguments
นี่คือสตริง (ดูabout_quoting_rules )
ให้คุณสร้างสตริงที่มีเครื่องหมายคำพูดที่ฝังได้ง่ายโดยทั่วไปจะใช้สำหรับสตริงหลายบรรทัดเช่น:
$data = @"
line one
line two
something "quoted" here
"@
เนื่องจากคำถามประเภทนี้ ( สัญกรณ์ 'x' หมายถึงอะไรใน PowerShell? ) เป็นเรื่องปกติที่นี่ใน StackOverflow และในความคิดเห็นของผู้อ่านจำนวนมากฉันจึงรวบรวมคำศัพท์ของเครื่องหมายวรรคตอน PowerShell ซึ่งเพิ่งเผยแพร่บน Simple-Talk.com อ่านทั้งหมดเกี่ยวกับ @ เช่นเดียวกับ% และ # และ $ _ และ? และอื่น ๆ ที่สมบูรณ์คู่มือ PowerShell เครื่องหมายวรรคตอน สิ่งที่แนบมากับบทความคือแผนภูมิผนังนี้ที่ให้ทุกอย่างในแผ่นเดียว:
คุณยังสามารถรวมเอาท์พุทของ cmdlet (หรือไปป์ไลน์) @()
เพื่อให้แน่ใจว่าสิ่งที่คุณได้รับกลับมานั้นเป็นอาร์เรย์แทนที่จะเป็นรายการเดียว
ตัวอย่างเช่น dir มักจะส่งคืนรายการ แต่ขึ้นอยู่กับตัวเลือกอาจส่งคืนอ็อบเจ็กต์เดียว หากคุณกำลังวางแผนที่จะทำซ้ำผลลัพธ์ด้วย foreach-object คุณต้องแน่ใจว่าคุณได้รับรายการกลับคืนมา นี่คือตัวอย่างที่สร้างขึ้น:
$results = @( dir c:\autoexec.bat)
อีกอย่างหนึ่ง ... อาร์เรย์ว่าง (เช่นการเริ่มต้นตัวแปร) แสดง@()
อยู่
ตัวดำเนินการ Splatting
ในการสร้างอาร์เรย์เราสร้างตัวแปรและกำหนดอาร์เรย์ อาร์เรย์จะถูกระบุโดยสัญลักษณ์ "@" มาพูดคุยกันข้างบนและใช้อาร์เรย์เพื่อเชื่อมต่อกับคอมพิวเตอร์ระยะไกลหลายเครื่อง:
$strComputers = @("Server1", "Server2", "Server3")<enter>
ใช้สำหรับอาร์เรย์และแฮช