在运行多个线程时无法使用反序列化的文件信息对象
Main获取文件信息并启动新线程。线程将加载我的模块文件和"使用"我在主要文件中获得的文件
$file = Get-FileInfo -path "test.zip"
$Scriptblock = {
Import-Module ".\path\to\foo\module.psm1"
Foo -File $using:file
}
Start-Job -ScriptBlock $ScriptBlock
在我的帖子中,我无法调用$ file.Basename,因为我的对象在传递给我的线程时被去除了deseralized。 Deseralized.IO.fileinfo类的功能少于原始的FileInfo类
我希望能够在我的主题中使用与$ file相同的功能,就像在主
中一样我有办法做到这一点吗?也许通过重新定义我的对象..?
答案 0 :(得分:1)
我认为通过将文件作为参数传递到scriptblock然后在作业中调用Get-FileInfo
来提高服务质量会更好:
$MyPath = "test.zip"
$Scriptblock = {
Import-Module ".\path\to\foo\module.psm1"
Foo -File $using:file
$file = Get-FileInfo -path $Using:MyPath
}
Start-Job -ScriptBlock $ScriptBlock
替代:
$MyPath = "test.zip"
$Scriptblock = {
param([String]$Path)
Import-Module ".\path\to\foo\module.psm1"
Foo -File $using:file
$file = Get-FileInfo -path $Path
}
Start-Job -ScriptBlock $ScriptBlock -ArgumentList $MyPath