2017-01-27 40 views
1

所以,这绝对是在鞭打我。我创建了一个脚本,用于根据用户对从一个文件共享到另一个文件共享的多个问题的响应来移动数据。我想要做的是有一个后台作业运行,提供移动前发生的所有文件的报告。因此,我添加了一小段代码,绝对不会从源文件共享收集信息。它只是提供来自我特定机器的数据。我究竟做错了什么?文件共享启动时的混乱

While ($sourcepath -eq $null) { 
$sourcepath= read-host "Enter source file path" 
} 
Set-Location $sourcepath 
Start-job -Scriptblock {Get-childitem -recurse |Out-File 
c:\users\john.smith\desktop\shareonfile.txt} 

回答

1

作业运行在不同的进程中,并有自己的作用域。工作目录不会被继承。为了证明这一点:

Set-Location $sourcepath 

Start-Job -ScriptBlock { 
    Get-Location 
} | Wait-Job | Receive-Job 

Get-Job | Remove-Job 

应该避免反正设置的位置,只要传递路径Get-ChildItem。要做到这一点,定义一个参数并传递其值如下:

Start-job -Scriptblock { param($thePath) 
    Get-childitem -Path $thePath -recurse | 
    Out-File c:\users\john.smith\desktop\shareonfile.txt 
} -ArgumentList $sourcepath 
+0

太棒了!非常感谢。这很有道理。 – user7431743