2013-08-12 42 views
6

Bộ phận CNTT của chúng tôi đang chuyển sang Windows 8 và mọi người đang bắt đầu sử dụng PowerShell làm môi trường dòng lệnh cửa sổ mặc định của họ thay vì cmd.exe.Làm cách nào để truyền chuỗi thô tới các lệnh thông qua dòng lệnh trong PowerShell?

Thật không may PowerShell đánh giá những thứ bạn nhập vào nó và thật khó để chuyển đối số dòng lệnh thô đến chương trình.

Ví dụ tôi đã có một chương trình inventory.exe có một chuỗi đặc biệt định dạng đầu ra của nó. Tôi không thể vượt qua chuỗi đặc biệt này trong PowerShell khi tôi nhận được một lỗi bí ẩn:

PS C:\Users\Administrator> inventory.exe 'inventory "," date "," owner' 
inventory.exe error: No comma allowed 

tôi cho rằng PowerShell đánh giá chuỗi 'inventory "," date "," owner' bằng cách nào đó và cái gì khác đã được thông qua chương trình inventory.exe kết quả là nó in một lỗi.

chương trình này hoạt động ok trong cmd.exe:

C:\Documents and Settings\boda> inventory.exe 'inventory "," date "," owner' 
... (the output that I expect) ... 

Nó thậm chí trở nên tồi tệ hơn nếu tôi gõ ký tự như %, $ trong PowerShell.

Có ai biết cách truyền chuỗi thô vào lệnh trong PowerShell không?

Trả lời

8

Nếu bạn đang sử dụng Powershell v3.0, có một cú pháp mới để làm cho Powershell tránh bất kỳ phân tích cú pháp bổ sung nào cho các đối số. Một cái gì đó như:

inventory.exe --% 'inventory', 'date', 'owner' 

Có cách tiếp cận khác như đã đề cập ở đây: http://blogs.technet.com/b/josebda/archive/2012/03/03/using-windows-powershell-to-run-old-command-line-tools-and-their-weirdest-parameters.aspx

+0

1 Đó là một liên kết tuyệt vời! –

+0

Không biết về cú pháp đó, cảm ơn :) –

Các vấn đề liên quan