我正在開發創建PowerShell腳本的第一步,該腳本將通過打印機日誌(可能使用get-WMI cmdlet)讀取並解析日誌。之後,我計劃將腳本輸出到.txt文件中,打印機的名稱,打印機使用次數的計數器(如果可能)以及日誌中的特定信息。解析文本文件並寫出數據
爲了做到這一點,我決定嘗試向後工作。下面是日誌將是什麼樣子的一小部分:
10 Document 81, A361058/GPR0000151814_1: owned by A361058 was printed on R3556 via port IP_***.***.***.***. Size in bytes: 53704; pages printed: 2 20130219123105.000000-300
10 Document 80, A361058/GPR0000151802_1: owned by A361058 was printed on R3556 via port IP_***.***.***.***. Size in bytes: 53700; pages printed: 2
工作向後,只是專注於第一解析,我希望能夠明確獲得「/ GRP」,「R3446(一般,R * *,因爲這是打印機名稱)「,並獲取一個計數器,顯示特定打印機在日誌文件中出現的頻率。
它已經有一段時間,因爲我最後一次使用PowerShell的工作,但目前這是我已經設法以儘量實現我的目標是創建:
Select-String -Path "C:\Documents and Settings\a411882\My Documents\Scripts\Print Parse Test.txt" -Pattern "/GPR", " R****" -AllMatches -SimpleMatch
的代碼不會產生任何錯誤,但是我也無法讓任何輸出出現在屏幕上以查看我是否捕獲了/ GRP和打印機名稱。目前我正在努力確保在收集任何計數器之前收集正確的輸出。任何人都可以幫助我,並告訴我我的代碼有什麼問題嗎?
謝謝!
編輯:修復了我的代碼導致沒有數據出現在屏幕上的一個小錯誤。此時此代碼輸出整行兩行測試文本,而不是僅輸出/ GPR和服務器名稱。新的輸出如下:
My Documents\Scripts\Print Parse Test.txt:1:10 Document 81, A361058/GPR0000151814_1: owned by A361058 was printed on
R3556 via port IP_***.***.***.***. Size in bytes: 53704; pages printed: 2
20130219123105.000000-300
My Documents\Scripts\Print Parse Test.txt:2:10 Document 80, A361058/GPR0000151802_1: owned by A361058 was printed on
R3556 via port IP_***.***.***.***. Size in bytes: 53700; pages printed: 2
我想嘗試有它最終看起來像以下:
/GPR, R****, count: ## (although for now I'm less concerned about the counter)
刪除'寫主機|'。您不能將空白命令傳輸到另一個命令中。 'Select-String'會自行輸出結果 – 2013-02-21 18:31:54
Graimer:我最初嘗試不使用寫主機,但是每當我這樣做時,我也沒有得到任何輸出,所以我認爲我必須在某些情況下使用Write-Host方法 – Valrok 2013-02-21 18:36:17
如果'select-string'沒有返回對象,那是因爲它沒有找到任何東西。它沒有找到任何東西的原因是因爲你拼錯了「GPR」。 「/ GRP」不是「/ GPR」:-) – 2013-02-21 18:48:39