เรียกใช้คำสั่ง powershell จาก cmd


32

ฉันจะเรียกใช้คำสั่งนี้จาก cmd ได้อย่างไร:

powershell.exe "(get-process |? {$ _. คำอธิบาย -eq" Sysinter Process Explorer "}) | เลือก processname | out-file $ env: APPDATA \ example.txt"

ฉันยังได้รับข้อผิดพลาดนี้:

คุณต้องระบุค่านิพจน์ทางด้านขวามือของ '-eq' operato r ที่บรรทัด: 1 อักขระ: 37 + (รับกระบวนการ |? {$ _ คำอธิบาย -eq <<<< Sysinternals Process Explorer}) | เลือกชื่อกระบวนการ | ออกไฟล์ $ env: APPDATA \ example.txt + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordEx ception + FullyQualifiedErrorId: ExpectedValue Expression


3
ปัญหาของคุณอาจเป็นชุดเครื่องหมายคำพูดภายในของคุณ ลองลบพวกมันออกหรือถ้าจะต้องใช้ให้ลองใช้เจ้านี่: 'นั่นคือเครื่องหมายอะโพสโทรฟี
DeathByTensors

2
คำเตือน - โปรดอย่าใช้คำหยาบในโพสต์ของคุณ ฉันลบมันสำหรับคุณ โปรดทราบว่าผู้ใช้รายอื่นอาจตั้งค่าสถานะโพสต์ของคุณว่า "หยาบคายหรือไม่เหมาะสม" ซึ่งนำไปสู่การสูญเสียหรือการระงับตัวแทนที่เป็นไปได้ โปรดอ่านBe Nice : "หลีกเลี่ยงคำหยาบคายและสิ่งที่ชี้นำทางเพศ"
DavidPostill

คำตอบ:


41
powershell -command "get-process | ? {$_.Description -eq 'Sysinter Process Explorer'} | select processname | out-file $env:APPDATA\example.txt"

โดยทั่วไปคุณมีคำสั่ง powershell และวางไว้ในระหว่างคำพูดเหล่านี้เพื่อเรียกมันจาก CMD

powershell -command " #PasteCodeHere "

ภายในเครื่องหมายคำพูดเหล่านี้คุณต้องทำงานด้วย'มิฉะนั้นจะขัดจังหวะพารามิเตอร์คำสั่งของคุณ

แก้ไข:ข้อมูลเพิ่มเติม:

ค่อนข้างบ่อยคุณจะพบสิ่งนี้: powershell -command "& 'somestuff'"

&จะใช้ในการเรียกไฟล์ เมื่อคุณใช้คำสั่งเพียงอย่างเดียวก็ไม่จำเป็น&เมื่อคุณต้องการเรียกใช้สคริปต์คุณควรใช้มัน

powershell -command "& 'C:\foobar.ps1'"

คุณสามารถใช้powershell -file C:\file.ps1เพื่อเรียกสคริปต์


คุณเป็นผู้ชายที่ดีที่สุด <3 กำลังทำงานอยู่
Qassam Mahmoud

3
หากคำสั่งที่จะดำเนินการมีคำพูดพวกเขาจะต้องเป็นสองเท่า ตัวอย่าง: powershell - คำสั่ง "dir" "c: \ Program Files" ""
Myobis

1
@myobis หรือคุณสามารถใช้คำพูดเดียวpowershell -command " dir 'C:\Program Files' "
SimonS

1
@myobis ที่จริงการเพิ่มราคาเป็นสองเท่าไม่ทำงาน (ใน Windows 10 cmd) แต่การใช้แบ็กสแลช escaping ก็ทำได้:powershell -command "dir \"c:\Program Files\" "
เลือก

0

ฉันวางคำสั่งต่อไปนี้ลงในไฟล์แบตช์เพื่อรีเซ็ต Edge (ซึ่งทำให้เกิดปัญหาบางครั้ง) ไฟล์แบตช์ถูกเรียกใช้ในระดับผู้ดูแลระบบ โปรดทราบคำพูดสามในบรรทัด powershell ตัวอย่างนี้อาจอธิบายสิ่งต่าง ๆ สำหรับผู้ที่พยายามเรียกใช้คำสั่ง powershell จากบรรทัดคำสั่ง "cmd"

@echo off
c:
cd %userprofile%\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe
rmdir /s /q 
userprofile%\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe
powershell "Get-AppXPackage -AllUsers -Name Microsoft.MicrosoftEdge | Foreach 
{Add-AppxPackage -DisableDevelopmentMode -
  Register"""$($_.InstallLocation)\AppXManifest.xml""" -Verbose}"

หมายเหตุเครื่องหมาย "สาม" ในบรรทัด Powershell บรรทัดนั้นเป็นบรรทัดเดียวที่มี "สำหรับแต่ละคน" และ "-Register" เป็นคำที่ห่อหุ้มในกล่องแสดงความคิดเห็นนี้ ควรเป็นบรรทัดเดียวแม้ว่าในไฟล์แบตช์ (หรือในบรรทัดคำสั่งหากพิมพ์ด้วยตนเองลงในcmdเซสชัน)

สิ่งที่สำคัญคือหลังจากคำว่า "PowerShell" กลับเครื่องหมายจุลภาค (") เริ่มต้นและจบคำสั่งและเครื่องหมายจุลภาคคว่ำภายในอยู่แล้วในคำสั่ง powershell ถูกส่งผ่านจะถูกแปลงเป็นเครื่องหมายคำพูด" สาม "( """)

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