2016-08-09 3 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! 내가 어떻게 그걸 놓칠 수 있었는지 모르겠어. 너는 날 구 했어! –

관련 문제