Powershell获取作业文件名或扩展名太长

Powershell获取作业文件名或扩展名太长,powershell,asynchronous,Powershell,Asynchronous,我有一个收集服务器指标的PS脚本。当我以单线程方式运行它时,它工作得非常好。但是,当我将其设置为运行多线程时,我收到以下错误 An error occurred while starting the background process. Error reported: The filename or extension is too long. $jobs=$serverList|%{ Start-Job -InitializationScript $functions -ArgumentL

我有一个收集服务器指标的PS脚本。当我以单线程方式运行它时,它工作得非常好。但是,当我将其设置为运行多线程时,我收到以下错误

An error occurred while starting the background process. Error reported: The filename or extension is too long.

$jobs=$serverList|%{ Start-Job -InitializationScript $functions -ArgumentList $_ -ScriptBlock {
Script Line-1
Script Line-2
Script Line-3
Script Line-4
Script Line-5
Script Line-6
Script Line-7
}
$functions
有10个函数,总共约350行

根据我所做的研究,出现此错误是因为初始化脚本的脚本行太多。请告诉我如何在不截断任何脚本的情况下修复此错误

第一次更新- 我能够通过减小脚本块的大小来解决这个问题。基于此,我们只能在脚本块中发送大约12字节的数据。很奇怪的问题。关于如何克服此尺寸限制的任何解决方案


现在,这个问题可以通过删除不需要的空格和附加的日志来解决。但是,如果需要进一步修改脚本,此解决方案可能不适用。期待几点建议。

检查本页的选项3:。这似乎只是因为它以一个长的默认位置启动会话。也许您可以使用带有
-WorkingDirectory$env:windir
参数的
启动流程
,而不是
启动作业
?@Kluk,这对我来说不是一个选项,因为这些都是产品服务器,我没有进行此操作所需的访问权限。同样,同一脚本的克隆工作正常,因为它具有较少的
$函数
,并且没有代码行。请尝试以下操作:创建一个包含所有命令的专用.ps1脚本文件。将其复制到远程服务器。使用“开始作业”运行大脚本文件。这行吗?@vonPryz这是不行的。因为我有70多台服务器要收集详细信息。请将脚本放在SMB共享上,并通过UNC路径从每个服务器调用它。但是,如果您不知道从作业运行脚本文件是否与运行scriptblock版本有相同的问题,那么这是另外一点。