2012-02-16 39 views
7

Tôi có một tập lệnh PS đơn giản cần chấp nhận tham số xảy ra là đường dẫn đến thư mục. Tôi có được con đường này giao cho tôi và gọi kịch bản ps như sau:Powershell và đường dẫn làm đối số được trích dẫn kép

powershell.exe -ExecutionPolicy Bypass -F "C:\temp\ctest\logging test\postinstall.ps1" "C:\temp\ctest\logging test\" 

tôi không thể kiểm soát việc bổ sung các '\' để con đường đó là param để kịch bản này, và nó phải dụng dấu ngoặc kép để chiếm không gian trong đường dẫn. Vì vậy, những gì tôi gió lên với là một biến bên trong kịch bản ps của tôi đó là chuỗi:

C:\temp\ctest\logging test"  <<-- error in path! with the double-quote char. :(

Câu hỏi của tôi là đơn giản, tôi hy vọng, nhưng tôi không thể xác định vị trí bất cứ ai đã giải quyết nó được nêu ra. Không có cách nào để nói với powershell không thoát khỏi báo giá kép cuối cùng trong kịch bản này?

Cảm ơn bạn đã dành thời gian và giáo dục tôi.

Trả lời

3

Sự cố có vẻ chỉ khi được gọi từ CMD. Trong tập lệnh của bạn, bạn có thể thực hiện điều này:

$args[0].TrimEnd('"') 

Nó sẽ xóa dấu nháy kép nếu có.

Hoặc bạn có thể tăng gấp đôi lên dấu chéo ngược:

C:\>powershell.exe -f C:\echo.ps1 "C:\temp\ctest\logging test\\" 

Nội dung echo.ps1

Write-Host ('"{0}"' -f $args[0]) 
0

thử như thế này:

powershell.exe -ExecutionPolicy Bypass -F 'C:\temp\ctest\logging test\postinstall.ps1' 'C:\temp\ctest\logging test\' 
+0

trả về ngay lập tức từ PS với: Chế biến -File '' C: \ temp \ ctest \ khai thác gỗ test \ postinstall.ps1 '' không thành công: Định dạng của đường dẫn đã cho không được hỗ trợ. Chỉ định một đường dẫn hợp lệ cho tham số -File. – joebalt

+0

- Chỉnh sửa: quên trích dẫn kép ... –

+0

Trích dẫn tất cả mọi thứ sản xuất: Xử lý -Gửi '' C: \ Temp \ ctest \ logging test \ postinstall.ps1 '' không thành công: Định dạng đường dẫn đã cho không được hỗ trợ. Chỉ định một đường dẫn hợp lệ cho tham số -File. – joebalt

0

Bạn đã cố gắng đơn trích lập luận của bạn trong gọi của bạn?

+0

Trích dẫn đơn tham số tới tập lệnh ps1 tạo ra lỗi khi chúng ta cố gắng thực hiện lệnh dir trên tham số đó bên trong tập lệnh ps: Get-ChildItem: Không thể tìm thấy ổ đĩa. Ổ đĩa có tên '' C 'không tồn tại. – joebalt

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