คำถามติดแท็ก powershell

PowerShell เป็นบรรทัดคำสั่งข้ามแพลตฟอร์มและยูทิลิตี้การเขียนสคริปต์จาก Microsoft ใช้แท็กนี้สำหรับคำถามเกี่ยวกับการเขียนและเรียกใช้สคริปต์ PowerShell เท่านั้น ควรติดแท็กคำถามการเขียนโปรแกรมสำหรับ PowerShell Core เวอร์ชั่นข้ามแพลตฟอร์ม (Windows, macOS และ Linux) [powershell-core] ควรถามคำถามเกี่ยวกับการดูแลระบบใน Super User หรือ Server Fault

4
แจ้งให้ผู้ใช้ป้อนใน PowerShell
ฉันต้องการให้ผู้ใช้ใส่ชุดของอินพุตรวมถึงรหัสผ่านและชื่อไฟล์ ฉันมีตัวอย่างของการใช้host.ui.promptซึ่งดูเหมือนสมเหตุสมผล แต่ฉันไม่เข้าใจการคืนสินค้า มีวิธีที่ดีกว่าในการรับอินพุตของผู้ใช้ใน PowerShell หรือไม่
209 powershell 

4
คุณจะรันคำสั่งดั้งเดิมโดยพลการจากสตริงได้อย่างไร?
ฉันสามารถแสดงความต้องการของฉันกับสถานการณ์ต่อไปนี้: เขียนฟังก์ชั่นที่ยอมรับสตริงที่จะเรียกใช้เป็นคำสั่งดั้งเดิม มันไม่ได้ดึงความคิดที่ไกลเกินไป: หากคุณกำลังเชื่อมต่อกับยูทิลิตี้บรรทัดคำสั่งอื่น ๆ จากที่อื่น ๆ ใน บริษัท ที่ให้คำสั่งให้คุณรันคำต่อคำ เพราะคุณไม่ได้ควบคุมคำสั่งคุณต้องยอมรับคำสั่งที่ถูกต้องเป็น input นี่คืออาการสะอึกหลักที่ฉันไม่สามารถเอาชนะได้ง่าย: คำสั่งอาจดำเนินการโปรแกรมที่อยู่ในพา ธ ที่มีช่องว่างอยู่: $command = '"C:\Program Files\TheProg\Runit.exe" Hello'; คำสั่งอาจมีพารามิเตอร์ที่มีช่องว่างในพวกเขา: $command = 'echo "hello world!"'; คำสั่งอาจมีทั้งเห็บเดี่ยวและคู่: $command = "echo `"it`'s`""; มีใดวิธีทำความสะอาดการบรรลุนี้หรือไม่? ฉันทำได้แค่คิดวิธีการฟุ่มเฟือยและการแก้ปัญหาที่น่าเกลียด แต่สำหรับภาษาสคริปต์ฉันรู้สึกว่ามันน่าจะง่าย

17
วิธีรับไดเร็กทอรีปัจจุบันของ cmdlet ที่ถูกเรียกใช้งาน
นี่ควรจะเป็นงานง่าย ๆ แต่ฉันได้เห็นหลายครั้งในการหาพา ธ ไปยังไดเร็กตอรี่ที่ cmdlet ที่เรียกใช้งานอยู่ด้วยความสำเร็จที่หลากหลาย ตัวอย่างเช่นเมื่อผมดำเนินการC:\temp\myscripts\mycmdlet.ps1ที่มีการตั้งค่าไฟล์ที่C:\temp\myscripts\settings.xmlฉันต้องการที่จะสามารถที่จะเก็บในตัวแปรภายในC:\temp\myscriptsmycmdlet.ps1 นี่เป็นวิธีหนึ่งที่ใช้งานได้ (แม้ว่าจะค่อนข้างยุ่งยาก): $invocation = (Get-Variable MyInvocation).Value $directorypath = Split-Path $invocation.MyCommand.Path $settingspath = $directorypath + '\settings.xml' อีกคนหนึ่งแนะนำวิธีแก้ปัญหานี้ซึ่งทำงานได้เฉพาะในสภาพแวดล้อมการทดสอบของเรา: $settingspath = '.\settings.xml' ฉันชอบวิธีการหลังมากและต้องการให้วิเคราะห์ filepath เป็นพารามิเตอร์ในแต่ละครั้ง แต่ฉันไม่สามารถทำให้มันทำงานบนสภาพแวดล้อมการพัฒนาของฉันได้ ฉันควรทำอย่างไร มีบางสิ่งที่เกี่ยวข้องกับการกำหนดค่า PowerShell หรือไม่
202 powershell  cmdlet 


10
วิธีเปลี่ยนเส้นทางเอาต์พุตของ PowerShell ไปยังไฟล์ระหว่างการดำเนินการ
ฉันมีสคริปต์ PowerShell ซึ่งฉันต้องการจะเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์ ปัญหาคือฉันไม่สามารถเปลี่ยนวิธีเรียกสคริปต์นี้ได้ ดังนั้นฉันไม่สามารถทำ: .\MyScript.ps1 > output.txt ฉันจะเปลี่ยนเส้นทางการส่งออกของสคริปต์ PowerShell ในระหว่างการดำเนินการได้อย่างไร

8
วิธีการเรียกใช้สคริปต์ PowerShell จากแบตช์ไฟล์
ฉันพยายามเรียกใช้สคริปต์นี้ใน PowerShell ฉันได้บันทึกสคริปต์ด้านล่างเช่นเดียวps.ps1กับบนเดสก์ท็อปของฉัน $query = "SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2" Register-WMIEvent -Query $query -Action { invoke-item "C:\Program Files\abc.exe"} ฉันสร้างสคริปต์ชุดเพื่อเรียกใช้สคริปต์ PowerShell นี้ @echo off Powershell.exe set-executionpolicy remotesigned -File C:\Users\SE\Desktop\ps.ps1 pause แต่ฉันได้รับข้อผิดพลาดนี้:

6
“ Write-Host”,“ Write-Output” หรือ“ [console] :: WriteLine” ต่างกันอย่างไร?
มีหลายวิธีในการส่งข้อความ เป็นความแตกต่างที่มีประสิทธิภาพระหว่างการแสดงผลผ่านทางบางสิ่งบางอย่างอะไรWrite-Host, Write-Outputหรือ[console]::WriteLine? ฉันยังสังเกตเห็นว่าถ้าฉันใช้: write-host "count=" + $count ที่+ได้รับรวมอยู่ในการส่งออก ทำไมเป็นอย่างนั้น? ไม่ควรประเมินนิพจน์เพื่อสร้างสตริงที่ต่อกันก่อนที่จะถูกเขียนออกมา?
193 powershell 

9
ฟังก์ชันส่งคืนค่าใน PowerShell
ฉันได้พัฒนาฟังก์ชัน PowerShell ที่ดำเนินการหลายอย่างที่เกี่ยวข้องกับการจัดเตรียมไซต์SharePoint Team ในที่สุดฉันต้องการฟังก์ชั่นเพื่อกลับ URL ของเว็บไซต์ที่จัดเตรียมเป็นสตริงดังนั้นในตอนท้ายของฟังก์ชั่นของฉันฉันมีรหัสต่อไปนี้: $rs = $url.ToString(); return $rs; รหัสที่เรียกใช้ฟังก์ชันนี้มีลักษณะดังนี้: $returnURL = MyFunction -param 1 ... ดังนั้นฉันคาดหวังสตริง แต่มันไม่ได้ แต่เป็นวัตถุประเภท System.Management.Automation.PSMethod แทน เหตุใดจึงส่งคืนชนิดนั้นแทนที่จะเป็นชนิดสตริง
188 powershell 


11
ฉันสามารถรับ && เพื่อทำงานใน Powershell ได้หรือไม่
&&เป็นเรื่องยากที่ฉาวโฉ่ในการค้นหาใน google แต่ที่ดีที่สุดที่ฉันได้พบคือบทความนี้-andซึ่งกล่าวถึงการใช้ น่าเสียดายที่มันไม่ได้ให้ข้อมูลเพิ่มเติมและฉันไม่สามารถหาสิ่งที่ฉันควรจะทำกับ-and(อีกครั้งสิ่งที่ยากฉาวโฉ่ในการค้นหา) บริบทที่ฉันพยายามจะใช้คือ "execute cmd1 และหากประสบความสำเร็จให้รัน cmd2" โดยพื้นฐานแล้วสิ่งนี้: csc /t:exe /out:a.exe SomeFile.cs && a.exe นี่ควรเป็นตัวแทนง่ายๆเพียงไม่กี่คนที่รู้ว่าขอบคุณ! แก้ไข: หากคุณต้องการรันคำสั่งหลายคำสั่งในบรรทัดเดียวและคุณไม่สนใจว่าคำสั่งแรกล้มเหลวหรือไม่คุณสามารถใช้;เพื่อวัตถุประสงค์ส่วนใหญ่ของฉันได้ ตัวอย่างเช่นkill -n myapp; ./myapp.exe.
186 syntax  powershell 

16
สคริปต์ PowerShell เพื่อส่งคืน. NET Framework รุ่นบนเครื่อง?
สคริปต์ PowerShell จะส่งคืนเวอร์ชันใด ๆ ของ. NET Framework บนเครื่อง การเดาครั้งแรกของฉันคือสิ่งที่เกี่ยวข้องกับ WMI มีอะไรที่ดีกว่านี้ไหม? ควรเป็นหนึ่งซับเพื่อส่งคืนเฉพาะเวอร์ชันล่าสุดสำหรับการติดตั้ง. NET แต่ละครั้งในแต่ละบรรทัด
182 .net  powershell  version 



3
Array.Add vs + =
ฉันพบพฤติกรรมที่น่าสนใจใน PowerShell Arrays คือถ้าฉันประกาศอาร์เรย์เป็น: $array = @() จากนั้นลองเพิ่มรายการโดยใช้$array.Add("item")วิธีการฉันได้รับข้อผิดพลาดต่อไปนี้: ข้อยกเว้นการเรียก "เพิ่ม" ด้วยอาร์กิวเมนต์ "1": "การรวบรวมมีขนาดคงที่" อย่างไรก็ตามหากฉันต่อท้ายรายการโดยใช้$array += "item"รายการนั้นจะได้รับการยอมรับโดยไม่มีปัญหาและข้อ จำกัด "ขนาดคงที่" จะไม่ปรากฏ ทำไมนี้
179 arrays  powershell 

6
ฉันจะแปลงวัตถุอาร์เรย์เป็นสตริงใน PowerShell ได้อย่างไร
ฉันจะแปลงวัตถุอาร์เรย์เป็นสตริงได้อย่างไร ฉันเหนื่อย: $a = "This", "Is", "a", "cat" [system.String]::Join(" ", $a) โชคไม่ ความเป็นไปได้ที่แตกต่างกันใน PowerShell คืออะไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.