文件共享的起始作业混淆

时间:2017-01-27 17:38:27

标签: powershell

所以,这绝对是在鞭打我。我创建了一个脚本,根据用户对一个文件共享中的一些问题的响应来移动数据。我想要做的是运行后台作业,提供移动前移动的所有文件的报告。结果,我添加了一些绝对不从源文件共享收集信息的代码。它只是提供我特定机器的数据。我做错了什么?

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 个答案:

答案 0 :(得分: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