2010-05-29 59 views
0

爲什麼這段代碼無效?開始工作問題

function teste 
{ 
    begin 
    { 
     function lala { 
      while ($true) { 
       "JJJJ" | Out-File c:\Testes\teste.txt -Append 
      } 
     } 
    } 
    process { 
     Start-Job -ScriptBlock {lala}  
    } 
} 
+0

請問您能否在未來嘗試改進您的格式?我爲你清理了這個,但如果我不必這樣做,那會很好。 – Rytmis 2010-05-29 10:07:10

+0

好的..其實我第一次嘗試這樣做。 :) – user353401 2010-05-29 10:40:00

回答

1

我最好的猜測是範圍界定。當Start-Job運行腳本塊時,它會在不同的上下文中運行它 - 其中沒有定義「lala」的上下文。但是,如果你要修改你的代碼如下所示:

function Run-As-Background-Job 
{ 
    begin 
    { 
     $appendToFile = { 
      while ($true) { 
       "JJJJ" | Out-File c:\Testes\teste.txt -Append 
      } 
     } 
    } 
    process { 
     Start-Job -ScriptBlock $appendToFile 
    } 
} 

後臺作業不會試圖調用未被定義的名稱 - 相反,整個腳本塊將被傳遞給它,事情應該管用。

請注意,我建議您測試而不使用while循環,就像我那樣,因爲這會很快填滿磁盤。

另外,請在發佈代碼時注意更有意義的功能和變量名稱。 :-)

+0

你是對的,我正在做我的測試,並忘記更改名稱。抱歉。 但仍然沒有工作:( – user353401 2010-05-29 10:30:25

+0

你確定我的版本看起來現在這個樣子: 功能運行作爲背景,工作 { 開始 {$ appendToFile = { [System.DateTime的] ::現在|?出文件C:\用戶\勞裏\ test.txt的-append }} 過程 { 啓動工作-ScriptBlock $ appendToFile }} 和生產 「的test.txt」 與相應的內容,所以也許你的代碼還有其他錯誤 – Rytmis 2010-05-29 10:41:31

+0

我正在複製你的代碼:)。嘗試新的會話並重新加載我的IDE ...不工作:( – user353401 2010-05-29 10:42:53