0

ファイルが変更されるまでファイルを調べ、発生した変更をメールで送信するpowershellスクリプトを作成しようとしています。これまでのところ、このコード + Net.Mail.SmtpClientを使用して電子メールを送信するコードがあります。

$DOCDIR = [Environment]::GetFolderPath("MyDocuments")
$TARGETDIR = "$DOCDIR\MatchedLog"
if(!(Test-Path -Path $TARGETDIR )){
    New-Item -ItemType directory -Path $TARGETDIR
}
$FILE = 'matched.txt'

$FSW = New-Object IO.FileSystemWatcher $TARGETDIR, $FILE - Property@{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FirstName, LastWrite'}

Register-ObjectEvent $FSW Changed -SourceIdentifier FileChanged -Action {
    $name = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
}

私が得るエラーは次のとおりです。

 Register-ObjectEvent : Cannot bind argument to parameter 'InputObject' because it is null.

なぜこれが起こっているのか正確にはわかりません

4

2 に答える 2

1

これはタイプミスのようです[IO.NotifyFilters]が、定義がありませんFirstName。あなたはおそらく意味しますFileName

http://msdn.microsoft.com/en-us/library/system.io.notifyfilters.aspx

于 2013-06-26T20:45:40.083 に答える
0

これは正常に機能し、何らかの理由で変更を 2 回続けて出力します。多くの人がオンラインで同じ問題を抱えているのを見ましたが、まだ問題を見つけようとしています. また、「matched.txt」から変更された行を取得し、「Changed: /path/to/file/matched.txt」の代わりに出力する必要があります。

$DOCDIR = [Environment]::GetFolderPath("MyDocuments")
$TARGETDIR = "$DOCDIR\MatchedLog"
if(!(Test-Path -Path $TARGETDIR )){
    New-Item -ItemType directory -Path $TARGETDIR
}
$FILE = 'matched.txt'

$FSW = New-Object System.IO.FileSystemWatcher
$FSW.Path = $TARGETDIR
$FSW.IncludeSubdirectories = $false

$changed = Register-ObjectEvent $FSW "Changed" -Action{
    write-host "Changed: $($eventArgs.FullPath)"
}
于 2013-06-26T20:58:29.180 に答える