Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell脚本同时写入一个文件Out file-FilePath-InputObject-Append_Powershell - Fatal编程技术网

Powershell脚本同时写入一个文件Out file-FilePath-InputObject-Append

Powershell脚本同时写入一个文件Out file-FilePath-InputObject-Append,powershell,Powershell,我制作了一个powershell脚本,将数据写入一个文本文件 正在使用第三方软件部署程序执行脚本。好的是当计算机联机并执行作业时它会等待,坏的是当脚本在已经100多台联机的计算机上执行时,我只从8台计算机和2条空行中获得了信息 很可能是因为powershell脚本在100多台计算机上同时运行,并且该文件正在使用中 无法在第三方软件部署程序中使用“等待脚本在第一台计算机上执行” 问题在于线路- $srvpath = [path to text file] $computer = "Name of

我制作了一个powershell脚本,将数据写入一个文本文件

正在使用第三方软件部署程序执行脚本。好的是当计算机联机并执行作业时它会等待,坏的是当脚本在已经100多台联机的计算机上执行时,我只从8台计算机和2条空行中获得了信息

很可能是因为powershell脚本在100多台计算机上同时运行,并且该文件正在使用中

无法在第三方软件部署程序中使用“等待脚本在第一台计算机上执行”

问题在于线路-

$srvpath = [path to text file]
$computer = "Name of computer"
$data = "Some data not more than ~30 characters"
Out-File -FilePath $srvpath -InputObject "$computer - $data" -Append
我目前的解决方案是分别为每台计算机创建临时文件,然后启动第二个脚本,该脚本将读取这些文件并写入一个文件(按字母顺序排序),然后删除临时文件


但我想坚持使用一个脚本,那么是否可以检查数据是否写入文件,或者检查文本文件是否已经在使用,然后等待?避免额外的空行也很好,但这不是一个大问题。

我从未成功地将多台计算机附加到同一个文件中。我通常使用的策略是让每台计算机在中央服务器共享上创建自己的单独输出文件。文件名以计算机名作为前缀,以防止重复的文件名。一旦我确定所有计算机都已完成运行,我将附加来自中央共享的所有数据。另一个选项是通过远程系统上的
Start Job
运行脚本代码,并从完成的作业中收集结果(请参阅)。