【问题标题】:Powershell script to run parallel on different server to perform cleanup用于在不同服务器上并行运行以执行清理的 Powershell 脚本
【发布时间】:2021-01-14 13:21:42
【问题描述】:

我想使用下面的脚本对 500 个 VDI 执行磁盘清理,并使用下面的脚本创建一个包含 VDI 状态(在线或离线)和磁盘空间详细信息的正确报告。但是这里我不使用每个循环,因为我想运行清理在 VDI 上并行。如果任何 VDI 处于脱机状态或未启用 winRM,脚本将为该 VDI 抛出错误,我想捕获这些 VDI 并报告它们是否处于脱机状态或任何其他 winrm 错误。我可以获得在线磁盘空间详细信息VDI 但如何在报告中获取脱机或错误 VDI 状态???????

$AllVDI = get-content "list for500 vDI "
$Space= Invoke-Command -ComputerName $AllVDI  -ScriptBlock {
                                Remove-Item -Path "C:\Windows\Temp\*"  -Recurse -Force 
                               Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'"
}
$Space|select systemname,drive,freespace|export.csv "C:\report"

【问题讨论】:

  • 我认为您正在寻找的是将 powershell 的元素作为作业运行 - ss64.com/ps/start-job.html ,您将创建作业以在多个服务器上调用命令。有关并行运行作业的更多信息 - adamtheautomator.com/powershell-multithreading/…
  • 它已经在多台服务器上创建会话,但是当某些服务器无法访问时,它会失败并在 powershell 控制台中抛出错误。我想捕获这些服务器并将它们的状态作为离线打印到我正在提取的报告或任何其他文本文件中。这里我不使用每个循环,因为它需要很长时间

标签: powershell powershell-remoting


【解决方案1】:

嗨,其实我使用的是 PowerShell 5.1,所以不能使用 foreach-object -Parallel

invoke-command -computername srv1,srv2,srv3 -scriptblock {get-process}

默认情况下,此命令将并行运行。我只是想要正确报告具有磁盘空间详细信息的离线和在线服务器。我从 Microsoft QnA 解决了我的问题。仅供参考,请按照我的预期方式访问以下链接。

确实感谢您的帮助...感谢

https://docs.microsoft.com/en-us/answers/questions/230721/powershelll-script-to-get-server-status-and-disk-s.html?childToView=231124#answer-231124

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多