2016-08-09 5 views
1

私はフォルダをポーリングするためのスクリプトを使って作業しています。ファイルがこのフォルダにドロップされると、受信者に電子メールが送信されます。なぜ私のローカル変数はnullですか?

$folder = "D:\\temptest" 
$filter = "*.txt" 

$fsw = New-Object System.IO.FileSystemWatcher $folder, $filter -Property @{ 
    IncludeSubDirectories = $false 
    NotifyFilter = [System.IO.NotifyFilters]'FileName, LastWrite' 
} 

$actionToRun = { 
    $path = $Event.SourceEventArgs.FullPath 
    $name = $Event.SourceVentArgs.Name 
    $changeType = $Event.SourceEventArgs.ChangeType 
    $timeStamp = $Event.TimeGenerated 

    Write-Host $name # --> Here $name contains the file name 

    $Recipient = "Peter Rundqvist <to address>" 
    $Sender = "SocSupport <from address>" 
    $Subject = "New document" 
    $Body = $name # --> But here, $name is null 

    Send-MailMessage -To $Recipient -From $Sender -Subject $Subject -Body $Body -SmtpServer "some mail server" 
} 

$onCreated = Register-ObjectEvent -InputObject $fsw -EventName Created -SourceIdentifier FileCreated -Action $actionToRun 

なぜ$nameがうまくWrite-Host作品のパラメータとしてそれを使用するのに対し、Send-MailMessage(それがnullとして展開さ)のパラメータとして使用することはできないということである。ここでは

コードですか?

答えて

4

タイプミスがあり、それを見つけるために数回走っています。

$name = $Event.SourceVentArgs.Name 

は次のようになります。

$name = $Event.SourceEventArgs.Name 

それはあなたが今までホストに書き込むことができるように$名に値を持っていたかもしれない理由を言うのは難しいです。

+0

ありがとう、Chris!どのように私はそれを逃すことができたかわからない...あなたは私の日を救った! –

関連する問題