0

에 콘솔에서 작동하지 않습니다새로운-WebServiceProxy이 내 코드의 샘플 만 ISE

Add-Type -AssemblyName PresentationFramework 

    Get-Content "$PSScriptRoot\config.ini" | ForEach-Object -Begin {[email protected]{}} -Process {$store = [regex]::split($_,'='); if(($store[0].CompareTo("") -ne 0) -and ($store[0].StartsWith("[") -ne $True) -and ($store[0].StartsWith("#") -ne $True)) {$config.Add($store[0], $store[1])}} 

    $folder = $config.Get_Item("CSVFolder") 
    $filter = $config.Get_Item("CSVFile") 
    $uri = $config.Get_Item("WebServiceUri") 

    Function Register-Watcher { 
     $watcher = New-Object IO.FileSystemWatcher $folder, $filter -Property @{ 
      IncludeSubdirectories = $false 
      EnableRaisingEvents = $true 
     } 

     $changeAction = { 

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

      $ConWebSrv = New-WebServiceProxy -Uri $uri 
      $rescode = 0 
      $resreason = 0 

      $get = Get-Content -Path $path -Last 1 
      $artnbr,$barc,$desc,$pu,$qtypu,$meanval,$mittelw,$free1,$free2,$free3,$lenght,$width,$height,$lengthuni,$volume,$voluni,$weight,$weightuni,$timest = $get.split(";") 

      $CommWebSrv = $ConWebSrv.setItemDims($artnbr,$width,$lenght,$height,$weight,$weight,"EA","KG","CM","KHT",[ref]$rescode,[ref]$resreason) 

      $msgBoxInput = [System.Windows.MessageBox]::Show("Nova leitura detectada. Pretende comunicar?","","YesNo", "Information") 
      switch ($msgBoxInput) { 

        "Yes" {write-host "Yes $artnbr"} 
        "No" {write-host "No"} 
      } 
     } 

     Register-ObjectEvent $Watcher "Changed" -Action $changeAction 
    } 
Register-Watcher 

내가 스크립트를 종료하고 모든 ISE에 확인하고, 코드는 아무 문제없이 실행됩니다. 하지만 콘솔에서 실행하면 CSV 파일을 업데이트 할 때 아무런 문제가 발생하지 않습니다. 나는 문제를 발견했다. 그것은 $ConWebSrv = New-WebServiceProxy -Uri $uri에있다. 코드에 주석을 달면 콘솔에서 문제없이 실행됩니다.

주의 : 콘솔에 복사하여 붙여 넣으면 작동하지만 .ps1 파일로 시도하십시오.

+0

다음과 같이 시도해 볼 수 있습니다 :'New-WebServiceProxy -Uri $ uri -UseDefaultCredential $ true' – Manu

+0

@Manu, same ... ISE에서 실행하고 시도 할 때 콘솔 bue에 복사하여 붙여 넣으면 작동합니다. \ test.ps1 실행되고 어떤 오류도주지 않지만 파일을 업데이트 할 때 창을 팝업하지 않습니다. New-WebServiceProxy에 대한 어셈블리가 필요할 수 있습니까? 검색했지만 아무것도 찾지 못했습니다. – emnt

답변

0

문제가 해결되었습니다. 스크립트 블록 $ changeaction의 변수는 그 scriptblock 안에 있어야합니다.