开始工作问题

时间:2010-05-29 03:46:21

标签: powershell-v2.0

为什么这段代码不起作用?

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

1 个答案:

答案 0 :(得分: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循环,因为这会很快填满你的磁盘。

此外,请在发布代码时瞄准更有意义的功能和变量名称。 : - )