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

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

5
การเรียกใช้ไฟล์ EXE โดยใช้สคริปต์ PowerShell
ฉันพยายามเรียกใช้ไฟล์ EXE โดยใช้สคริปต์ PowerShell หากฉันใช้บรรทัดคำสั่งมันจะทำงานได้โดยไม่มีปัญหา (ก่อนอื่นฉันระบุชื่อของไฟล์ปฏิบัติการและชุดของพารามิเตอร์ที่จะเรียกใช้): "C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode แต่การทำสิ่งเดียวกันภายในสคริปต์จะส่งกลับข้อผิดพลาด: คำว่า '"C: \ Program Files \ Automated QA \ TestExecute 8 \ Bin \ TestExecute.exe" C: \ temp \ TestProject1 \ TestProject1.pjs / run / exit / SilentMode' ไม่รู้จักเป็นชื่อของ cmdlet ฟังก์ชัน ไฟล์สคริปต์หรือโปรแกรมที่ใช้งานได้ ตรวจสอบการสะกดชื่อหรือถ้ามีพา ธ ตรวจสอบว่าพา …

7
การจับเอามาตรฐานและข้อผิดพลาดกับ Start-Process
มีข้อบกพร่องในStart-Processคำสั่งของ PowerShell เมื่อเข้าถึงStandardErrorและStandardOutputคุณสมบัติหรือไม่ หากฉันรันสิ่งต่อไปนี้ฉันจะไม่ได้รับผลลัพธ์: $process = Start-Process -FilePath ping -ArgumentList localhost -NoNewWindow -PassThru -Wait $process.StandardOutput $process.StandardError แต่ถ้าฉันเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์ฉันจะได้ผลลัพธ์ที่คาดหวัง: $process = Start-Process -FilePath ping -ArgumentList localhost -NoNewWindow -PassThru -Wait -RedirectStandardOutput stdout.txt -RedirectStandardError stderr.txt


3
อ่านไฟล์ทีละบรรทัดใน PowerShell
ฉันต้องการอ่านไฟล์ทีละบรรทัดใน PowerShell โดยเฉพาะฉันต้องการวนซ้ำไฟล์เก็บแต่ละบรรทัดในตัวแปรในลูปและดำเนินการประมวลผลบางอย่างในบรรทัด ฉันรู้ว่าเทียบเท่า Bash: while read line do if [[ $line =~ $regex ]]; then # work here fi done < file.txt เอกสารประกอบเกี่ยวกับลูป PowerShell ไม่มากนัก

7
จะทำอย่างไรให้หัวหางมากขึ้นน้อยลงใน Powershell? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการเมื่อปีที่แล้ว ปรับปรุงคำถามนี้ บน Windows, ใช้ Powershell สิ่งที่เป็นคำสั่งที่เทียบเท่ากับลินุกซ์head, tail, more, lessและsed?

5
แสดงตัวแปรสภาพแวดล้อมทั้งหมดจากสคริปต์ PowerShell ที่รัน
ฉันต้องการแสดงตัวแปรสภาพแวดล้อมที่กำหนดค่าไว้ทั้งหมดในสคริปต์ PowerShell ที่รันไทม์ โดยปกติเมื่อแสดงตัวแปรสภาพแวดล้อมฉันสามารถใช้สิ่งใดสิ่งหนึ่งต่อไปนี้ที่เชลล์ (รวมถึงเทคนิคอื่น ๆ แต่สิ่งเหล่านี้ทำได้ง่าย): gci env:* ls Env: อย่างไรก็ตามฉันมีสคริปต์ที่ถูกเรียกจากโปรแกรมอื่นและเมื่อฉันใช้หนึ่งในการเรียกข้างต้นในสคริปต์แทนที่จะนำเสนอด้วยตัวแปรสภาพแวดล้อมและค่าของมันฉันจะได้รับรายการSystem.Collections.DictionaryEntryประเภทแทนตัวแปรและค่าของมันแทน . ภายในสคริปต์ PowerShell ฉันจะแสดงตัวแปรสภาพแวดล้อมทั้งหมดได้อย่างไร

7
วิธีทำให้แท็บ PowerShell เสร็จสมบูรณ์เหมือน Bash
สมมติว่าฉันมีไฟล์ต่อไปนี้ในไดเร็กทอรีปัจจุบันของฉัน: buildBar.bat buildFoo.bat buildHouse.bat และฉันพิมพ์ต่อไปนี้ที่พร้อมรับคำสั่งของฉันแล้ว./buTAB ใน Bash จะขยายเป็น ./build ใน PowerShell จะขยาย./buildBar.batเป็นรายการแรกในรายการ ใน Cmd ลักษณะการทำงานจะเหมือนกับ PowerShell ฉันชอบพฤติกรรม Bash - มีวิธีทำให้ PowerShell ทำงานเหมือน Bash หรือไม่?

2
การเปลี่ยนการเข้ารหัสเอาต์พุตเริ่มต้นของ PowerShell เป็น UTF-8
ตามค่าเริ่มต้นเมื่อคุณเปลี่ยนเส้นทางผลลัพธ์ของคำสั่งไปยังไฟล์หรือไพพ์ไปยังอย่างอื่นใน PowerShell การเข้ารหัสจะเป็น UTF-16 ซึ่งไม่มีประโยชน์ ฉันต้องการเปลี่ยนเป็น UTF-8 สามารถทำได้เป็นกรณี ๆ ไปโดยการแทนที่>foo.txtไวยากรณ์ด้วย| out-file foo.txt -encoding utf8แต่มันเป็นเรื่องยากที่จะต้องทำซ้ำทุกครั้ง วิธีที่ถาวรในการตั้งสิ่งที่อยู่ใน PowerShell คือการใส่ไว้ใน\Users\me\Documents\WindowsPowerShell\profile.ps1; ฉันได้ตรวจสอบแล้วว่าไฟล์นี้ถูกเรียกใช้งานจริงเมื่อเริ่มต้น มีการกล่าวกันว่าสามารถตั้งค่าการเข้ารหัสเอาต์พุตได้$PSDefaultParameterValues = @{'Out-File:Encoding' = 'utf8'}แต่ฉันได้ลองแล้วและไม่มีผลใด ๆ https://blogs.msdn.microsoft.com/powershell/2006/12/11/outputencoding-to-the-rescue/ซึ่งพูดถึงการ$OutputEncodingมองแวบแรกราวกับว่ามันควรจะเกี่ยวข้อง แต่ก็พูดถึงเอาต์พุตที่เข้ารหัส ใน ASCII ซึ่งไม่ใช่สิ่งที่เกิดขึ้นจริง คุณตั้งค่า PowerShell ให้ใช้ UTF-8 ได้อย่างไร



11
ฉันจะเชื่อมต่อไฟล์ข้อความสองไฟล์ใน PowerShell ได้อย่างไร
ฉันกำลังพยายามจำลองการทำงานของcatคำสั่งใน Unix ฉันต้องการหลีกเลี่ยงวิธีแก้ปัญหาที่ฉันอ่านทั้งสองไฟล์เป็นตัวแปรอย่างชัดเจนเชื่อมต่อตัวแปรเข้าด้วยกันแล้วเขียนตัวแปรที่ต่อกัน

5
วิธีการแทนที่หลายสตริงในไฟล์โดยใช้ PowerShell
ฉันกำลังเขียนสคริปต์สำหรับปรับแต่งไฟล์คอนฟิกูเรชัน ฉันต้องการแทนที่สตริงหลายอินสแตนซ์ภายในไฟล์นี้และฉันพยายามใช้ PowerShell เพื่อทำงาน ใช้งานได้ดีสำหรับการแทนที่เพียงครั้งเดียว แต่การแทนที่หลายครั้งนั้นช้ามากเพราะทุกครั้งที่ต้องแยกวิเคราะห์ไฟล์ทั้งหมดอีกครั้งและไฟล์นี้มีขนาดใหญ่มาก สคริปต์มีลักษณะดังนี้: $original_file = 'path\filename.abc' $destination_file = 'path\filename.abc.new' (Get-Content $original_file) | Foreach-Object { $_ -replace 'something1', 'something1new' } | Set-Content $destination_file ฉันอยากได้อะไรแบบนี้ แต่ไม่รู้จะเขียนยังไง: $original_file = 'path\filename.abc' $destination_file = 'path\filename.abc.new' (Get-Content $original_file) | Foreach-Object { $_ -replace 'something1', 'something1aa' $_ -replace 'something2', 'something2bb' $_ -replace 'something3', …

10
ฉันจะใช้ Join-Path เพื่อรวมสตริงมากกว่าสองสตริงเข้ากับเส้นทางไฟล์ได้อย่างไร
หากฉันต้องการรวมสองสตริงเข้ากับเส้นทางไฟล์ฉันใช้Join-Pathสิ่งนี้: $path = Join-Path C: "Program Files" Write-Host $path "C:\Program Files"พิมพ์ว่า ถ้าฉันต้องการทำสิ่งนี้มากกว่าสองสตริงแม้ว่า: $path = Join-Path C: "Program Files" "Microsoft Office" Write-Host $path PowerShell แสดงข้อผิดพลาด: Join-Path: ไม่พบพารามิเตอร์ตำแหน่งที่ยอมรับอาร์กิวเมนต์ 'Microsoft Office' ที่ D: \ users \ ma \ my_script.ps1: 1 ถ่าน: 18 + $ path = join-path <<<< C: "Program Files" "Microsoft Office" …
107 powershell 

30
ไม่รู้จักคำว่า 'ng' เป็นชื่อของ cmdlet
วันนี้ในขณะที่ทำงานผ่าน AngularJS Intro พื้นฐานบางอย่างฉันพบปัญหา ฉันเปิด PowerShell เพื่อเริ่มโครงการ NPM ทำงาน ฉันสามารถติดตั้ง Angular โดยใช้: npm install -g @angular/cli ทุกครั้งที่ฉันพยายามรัน ng ฉันจะได้รับ: the term 'ng' is not recognized as the name of a cmdlet

3
“%” (เปอร์เซ็นต์) ทำอะไรใน PowerShell
ดูเหมือนว่าการดำเนินการ% จะเริ่มบล็อกสคริปต์หลังจากไปป์ไลน์แม้ว่าabout_Script_Blocksจะระบุว่าไม่จำเป็นต้องใช้% ก็ตาม ทั้งหมดนี้ใช้ได้ดี get-childitem | % { write-host $_.Name } { write-host 'hello' } % { write-host 'hello' } แต่เมื่อเราเพิ่มบล็อกสคริปต์หลังไปป์ไลน์เราจำเป็นต้องมี% ก่อน get-childitem | { write-host $_.Name }
106 powershell  syntax 

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