chạy lệnh powershell từ cmd


30

Làm thế nào tôi có thể chạy lệnh này từ cmd:

powershell.exe "(get-process |? {$ _. Mô tả -eq" Sysinter Process Explorer "}) | chọn processname | out-file $ env: APPDATA \ example.txt"

tôi vẫn nhận được lỗi này:

Bạn phải cung cấp biểu thức giá trị ở phía bên phải của toán hạng '-eq' r. Tại dòng: 1 char: 37 + (get-process |? {$ _. Mô tả -eq <<<< Sysiternals Process Explorer}) | chọn tên quá trình | out-file $ env: APPDATA \ example.txt + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordEx cece + FullQualifiedErrorId: ExpectedValueExpression


3
Vấn đề của bạn có thể là tập hợp dấu ngoặc kép bên trong của bạn. Hãy thử loại bỏ chúng hoặc nếu chúng phải được sử dụng, hãy thử sử dụng anh chàng này: 'aka dấu nháy đơn tại chỗ.
DeathByTensors

2
Cảnh báo - vui lòng không sử dụng các từ tục tĩu trong bài viết của bạn. Tôi đã gỡ bỏ nó cho bạn. Lưu ý rằng những người dùng khác có thể đã gắn cờ bài đăng của bạn là "thô lỗ hoặc lạm dụng" dẫn đến mất khả năng đại diện hoặc đình chỉ. Vui lòng đọc Be Nice : "Tránh các điều khoản thô tục và bất cứ điều gì khêu gợi tình dục"
DavidPostill

Câu trả lời:


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

về cơ bản, bạn có một lệnh powershell và dán nó vào giữa các trích dẫn này để gọi nó từ CMD

powershell -command " #PasteCodeHere "

bên trong các trích dẫn này bạn phải làm việc với 'nếu không nó sẽ làm gián đoạn tham số lệnh của bạn.

Chỉnh sửa: Thông tin bổ sung:

khá thường xuyên bạn sẽ gặp điều này: powershell -command "& 'somestuff'"

những &được sử dụng để gọi một tập tin. Khi bạn chỉ sử dụng một lệnh &là không chính thức, khi bạn muốn gọi một tập lệnh, bạn nên sử dụng nó.

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

Bạn cũng có thể sử dụng powershell -file C:\file.ps1để gọi một kịch bản


bạn là người đàn ông tốt nhất <3 nó đang hoạt động
Qassam Mahmoud

3
Nếu lệnh được thực thi có dấu ngoặc kép, chúng phải được nhân đôi. Ví dụ: powershell -command "dir" "c: \ Chương trình tập tin" ""
Myobis

1
@myobis hoặc bạn chỉ có thể sử dụng dấu ngoặc đơnpowershell -command " dir 'C:\Program Files' "
SimonS

1
@myobis Trên thực tế, nhân đôi số trích dẫn không hoạt động (trong Windows 10 cmd). Nhưng sử dụng dấu gạch chéo thoát đã làm:powershell -command "dir \"c:\Program Files\" "
wvducky

0

Tôi đã đặt các lệnh sau vào một tệp bó để đặt lại Edge (thỉnh thoảng vẫn gặp một số vấn đề). Tệp bó sau đó được chạy ở cấp Quản trị viên. Xin lưu ý các trích dẫn ba trong dòng powershell. Ví dụ này có thể làm rõ mọi thứ cho những người đang cố chạy lệnh powershell từ dòng lệnh "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}"

Lưu ý dấu ngoặc kép "ba" trong dòng Powershell. Nhân tiện, dòng đó là một dòng duy nhất với "For Each" và "-Register" được bao bọc trong hộp bình luận này. Nó phải là một dòng duy nhất mặc dù trong tệp bó (hoặc trên dòng lệnh nếu được nhập thủ công vào một cmdphiên).

Điều quan trọng là sau khi từ "PowerShell" đảo ngược dấu phẩy (") bắt đầu và kết thúc lệnh và bất kỳ dấu phẩy đảo ngược nội bộ nào đã có trong lệnh powershell được chuyển đều được chuyển thành dấu ngoặc kép" ba "( """)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.