0

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

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

1 回答 1

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 循环的情况下进行测试,因为这会很快填满您的磁盘。

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

于 2010-05-29T10:11:13.547 回答