为什么这段代码不起作用?
function teste
{
begin
{
function lala {
while ($true) {
"JJJJ" | Out-File c:\Testes\teste.txt -Append
}
}
}
process {
Start-Job -ScriptBlock {lala}
}
}
答案 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循环,因为这会很快填满你的磁盘。
此外,请在发布代码时瞄准更有意义的功能和变量名称。 : - )