83 :
デフォルトの名無しさん:
WSHでセキュリティのイベントログを削除するスクリプトを
perlで作ったですがエラーがでて困ってます。
# cscript script.pls
でコマンド実行すると
# PerlScript Error: (in cleanup) Can't call method "ClearEventlog" on an undefined value
とエラーになります。
環境はWindows XPにActivePerl 5.8.4です。
どこが悪いのでしょうか。改善点をお願いします。
以下ソースです。
use Win32::OLE;
open(LOG, "eventquery.vbs /v /fo csv /l Security |");
@data = <LOG>;
close(LOG);
$strComputer = ".";
$wmi = Win32::OLE->GetObject(
"WinMgmts:{impersonationLevel=impersonate}!//" .
"$strComputer\\root\\cimv2"
);
$colLogs = $wmi->ExecNortificaitonQuery(
"Select * from Win32_NTEventLogFile where LogFileName='Security'"
);
foreach $objEvent ($colLogs) {
$objEvent->ClearEventLog();
}
>>81 どうもありがとうございます。こんな仕様になっていたのですね。
clipboard でのテキスト処理も使えるし、Sendkeys も小技が利くしで、
私のやりたい事の9割方は、WSHでほとんど事足りてしまいます。
>>83 何やってるのか知らんけど、colLogsが配列なら$じゃなくて@colLogsなのでは?
もし配列へのポインタなら、foreachで使うところで @$colLogs にするとか。
いずれにせよスカラー値がforeachの中にあるのは気持ち悪い。
ってWSHの話じゃないじゃん・・・