如何在脚本块作业中附加到文件?

踩踏板

我想要的输出文件出了点​​问题。

我收到“空路径”错误,

No se puede enlazar el argumento al parámetro 'Path' porque es nulo.
    + CategoryInfo          : InvalidData: (:) [Add-Content], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.AddContentCommand
    + PSComputerName        : localhost

如果我在脚本块中移动$ outputReport,有时会出现错误,指出文件“ x”正在由其他进程使用:

El proceso no puede obtener acceso al archivo 'C:\Users\mario\Desktop\Report700.csv' porque está siendo utilizado en otro proceso.
    + CategoryInfo          : WriteError: (C:\Users\mario\Desktop\Report700.csv:String) [Add-Content], IOException
    + FullyQualifiedErrorId : GetContentWriterIOError,Microsoft.PowerShell.Commands.AddContentCommand
    + PSComputerName        : localhost

我的来源是这样的CSV:

pc1,user1
pc2,user2
pc3,user3

代码:

$csvLocation = '~\desktop\test.csv'
$csv = import-csv $csvLocation -Header PCName, User

#Output File:
$outputReport = "~\Desktop\Report700.csv"

#desktop cuota:
    # info:
    # "209715200" Bytes = 200 MB
    # "1048576"   Bytes = 1   MB

$cuota = "209715200"
$cuotaTranslate = "$($cuota / 1MB) MB"

Write-Host "Cuota is set to $cuotaTranslate"

#ScriptBlock
$sb = {
    Param($computer, $username)

    if (!(Test-Connection -Quiet -count 2 -computer $computer)) { return }

        $w7path = "\\$computer\c$\users\$username\desktop"       
        $desktopSize = (Get-ChildItem -Recurse -force $w7path | Measure-Object -ErrorAction "SilentlyContinue" -property length -sum) 

        if($($desktopSize.sum) -gt $cuota){

            $newline = "{0},{1},{2}" -f $computer,$Username,"$("{0:N0}" -f $($desktopSize.sum / 1MB)) MB"
            $newline | Add-Content $outputReport
        }


}


$csv | % {
  Start-Job -ScriptBlock $sb -ArgumentList $_.PCName, $_.User
}

# wait for completion
do {
  Start-Sleep -Milliseconds 100
} while (Get-Job -State 'Running')

# cleanup
Get-Job | % {
  Receive-Job -Id $_.Id
  Remove-Job -Id $_.Id
}

Write-Host "All done!"
安斯加·威彻斯

在这里遇到范围问题。变量$outputReport的脚本块内大于变量不同的变量$outputReport在脚本范围。如果希望脚本块中的变量与外部变量具有相同的值,则需要通过-ArgumentList参数将该值传递到脚本块中

#ScriptBlock
$sb = {
    Param($computer, $username, $outputReport)
    ...
}

$csv | % {
  Start-Job -ScriptBlock $sb -ArgumentList $_.PCName, $_.User, $outputReport
}

但是,这样做会产生其他问题,例如多个并行作业对输出文件的并发访问。您可以通过| Add-Content $outputReport从脚本块中删除并将所有输出从已完成的作业中收集到文件中时将所有输出写入文件来避免这种情况

为此,请删除此内容:

if($($desktopSize.sum) -gt $cuota){

    $newline = "{0},{1},{2}" -f $computer,$Username,"$("{0:N0}" -f $($desktopSize.sum / 1MB)) MB"
    $newline | Add-Content $outputReport
}

并添加以下内容:

Get-Job | % {
  Receive-Job -Id $_.Id
  Remove-Job -Id $_.Id
} | Out-File $outputReport

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在后台作业脚本块中使用文件中的功能

来自分类Dev

如何在C ++中附加到文件?

来自分类Dev

如何使用bash脚本将块字符串变量附加到文件?

来自分类Dev

如何使脚本命令附加到文件?

来自分类Dev

如何使脚本命令附加到文件?

来自分类Dev

如何在Firefox附件中附加到文件?

来自分类Dev

如何在脚本中显示作业?

来自分类Dev

如何在脚本中显示作业?

来自分类Dev

如何在不通过bash脚本触及子目录的情况下将日期附加到目录中的所有文件

来自分类Dev

如何在jQuery中附加到变量?

来自分类Dev

如何在Octave中附加到向量?

来自分类Dev

如何在React中附加到dom?

来自分类Dev

如何在Java中附加到DataOutputStream?

来自分类Dev

如何在bash脚本中将一个包含“ <>”的文件附加到另一个文件

来自分类Dev

如何将awk脚本附加到文件?

来自分类Dev

如何在Shell脚本中将值附加到变量

来自分类Dev

需要将python脚本的输出附加到文件中

来自分类Dev

将 powershell 脚本行附加到文件 .bat 中

来自分类Dev

如何在此简单的Java日志记录实现中附加到日志文件?

来自分类Dev

如何在不覆盖R的情况下附加到R中的现有文件?

来自分类Dev

如何在Silverstripe 3中将文件附加到数据对象

来自分类Dev

如何在R中的netCDF文件中将信息附加到数组

来自分类Dev

如何在Qt中将json数据附加到现有的json文件中

来自分类Dev

如何在Powershell中递归附加到文件名?

来自分类Dev

如何在for循环中的批处理命令中附加到现有文件名

来自分类Dev

如何在不覆盖R的情况下附加到R中的现有文件?

来自分类Dev

如何在此简单的Java日志记录实现中附加到日志文件?

来自分类Dev

如何将HTML中的值附加到jQuery脚本

来自分类Dev

如何在Python中将密钥项附加到.json文件?

Related 相关文章

  1. 1

    如何在后台作业脚本块中使用文件中的功能

  2. 2

    如何在C ++中附加到文件?

  3. 3

    如何使用bash脚本将块字符串变量附加到文件?

  4. 4

    如何使脚本命令附加到文件?

  5. 5

    如何使脚本命令附加到文件?

  6. 6

    如何在Firefox附件中附加到文件?

  7. 7

    如何在脚本中显示作业?

  8. 8

    如何在脚本中显示作业?

  9. 9

    如何在不通过bash脚本触及子目录的情况下将日期附加到目录中的所有文件

  10. 10

    如何在jQuery中附加到变量?

  11. 11

    如何在Octave中附加到向量?

  12. 12

    如何在React中附加到dom?

  13. 13

    如何在Java中附加到DataOutputStream?

  14. 14

    如何在bash脚本中将一个包含“ <>”的文件附加到另一个文件

  15. 15

    如何将awk脚本附加到文件?

  16. 16

    如何在Shell脚本中将值附加到变量

  17. 17

    需要将python脚本的输出附加到文件中

  18. 18

    将 powershell 脚本行附加到文件 .bat 中

  19. 19

    如何在此简单的Java日志记录实现中附加到日志文件?

  20. 20

    如何在不覆盖R的情况下附加到R中的现有文件?

  21. 21

    如何在Silverstripe 3中将文件附加到数据对象

  22. 22

    如何在R中的netCDF文件中将信息附加到数组

  23. 23

    如何在Qt中将json数据附加到现有的json文件中

  24. 24

    如何在Powershell中递归附加到文件名?

  25. 25

    如何在for循环中的批处理命令中附加到现有文件名

  26. 26

    如何在不覆盖R的情况下附加到R中的现有文件?

  27. 27

    如何在此简单的Java日志记录实现中附加到日志文件?

  28. 28

    如何将HTML中的值附加到jQuery脚本

  29. 29

    如何在Python中将密钥项附加到.json文件?

热门标签

归档