2009-03-09 23 views
7

Tôi đang cố gắng chạy một số lệnh logparser từ PowerShell nhưng Im gặp vấn đề với việc truyền các đối số trên một cách chính xác, đó là lời giải thích từ kịch bản của tôi;Đối số Powershell và logparser

d: \ scripting \ smtplogs \ logparser \ logparser.exe "SELECT TOP 50 Receiver, COUNT () VÀO% TMPOutput% \ TopReceiversNDRALL.gif TỪ% TempDir% \ PostAll.log ĐÂU Sender LIKE '<>' VÀ Người nhận KHÔNG THÍCH '%% go-fmtopper %%' NHÓM THEO ĐẶT HÀNG ĐẶT HÀNG BỞI COUNT () DESC "-i: TSV -iSeparator: không gian-tiêu đềRow: OFF -iHeaderFile:" header3.tsv "-lineFilter:" + 10. " -o: CHART -chartType: ColumnClustered -config: MyScript.js -chartTitle: "Người nhận cho tin nhắn NULL TẤT CẢ cho% DateGraph%"

Ive đọc tải về các đối số đóng gói nhưng không thể tìm ra cách để thực hiện công việc này!

Bất kỳ trợ giúp nào mà các bạn có thể cung cấp sẽ rất được đánh giá cao.

Cảm ơn

+0

+1 - Không chắc tại sao điều này lại bị bỏ phiếu, có vẻ như là một câu hỏi hay đối với tôi ... Fellow Andy đang tìm kiếm Andys –

+0

Vâng, điều đó khiến tôi băn khoăn. ra khỏi tôi! –

+0

+1 Vâng, tôi xem đây là một câu hỏi hợp lệ vì đôi khi nó khá phức tạp làm thế nào để vượt qua một chuỗi với rất nhiều dấu nháy đơn/đôi trong đó. – Sung

Trả lời

5

Đối với một tham số chuỗi phức tạp, cố gắng vượt qua đối số sử dụng PowerShell here-strings để bạn sẽ không phải lo lắng về việc thoát đơn dấu ngoặc kép/

UPDATE1: Tôi couldn không nhận được fomratting làm việc vì vậy đây là ảnh chụp màn hình. alt text

UPDATE2: Tôi đã có thể định dạng mã cuối cùng.

 
d:\scripting\smtplogs\logparser\logparser.exe @" 
SELECT TOP 50 Receiver, COUNT() 
INTO %TMPOutput%\TopReceiversNDRALL.gif 
FROM %TempDir%\PostAll.log 
WHERE Sender LIKE '' 
     AND Receiver NOT LIKE '%%go-fmtopper%%' 
GROUP BY Receiver 
ORDER BY COUNT() DESC" 
-i:TSV 
-iSeparator:space 
-headerRow:OFF 
-iHeaderFile:"header3.tsv" 
-lineFilter:"+10." 
-o:CHART 
-chartType:ColumnClustered 
-config:MyScript.js 
-chartTitle:"Receivers for NULL messages ALL for %DateGraph% 
"@ 

Hãy chắc chắn rằng bạn thêm một dòng mới giữa biệt danh ở đây dây @ "" @.

+0

Như luôn luôn giao phối, bạn đã bẻ khóa nó, tôi thậm chí còn chưa từng nghe về chuỗi này! Cảm ơn một lần nữa! –

+0

Ah, vui mừng khi biết rằng tôi đã có thể truyền bá sức mạnh của các dây nghe. Thật tuyệt vời khi truyền bá các chức năng của powershell;) – Sung

1

FYI, nếu bạn không cần bất kỳ mở rộng biến PowerShell nào thì tốt hơn bạn nên sử dụng các chuỗi được trích dẫn ở đây. Ví dụ như sau đôi trích dẫn ở đây chuỗi có thể gây ra cho bạn một số đau buồn:

@" 
$(get-process <some_core_os_process> | stop-process) 
"@ 

nơi sau đây là vô hại:

@' 
$(get-process <some_core_os_process> | stop-process) 
'@ 

Nó không có khả năng đây chuỗi của bạn sẽ chứa một cái gì đó quá rõ ràng nhưng một đơn giản $ f sẽ giải quyết không có gì tức là nó sẽ biến mất khỏi chuỗi gốc. Trừ khi, tất nhiên, $ f đã được xác định và đặt thành một cái gì đó khác null hoặc trống.

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