大佬教程收集整理的这篇文章主要介绍了使 powershell 中的每个循环在不同的服务器上并行运行,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用下面的脚本对 500 个 VDI 执行磁盘清理,并使用下面的脚本创建一个包含 VDI 状态和磁盘空间详细信息的正确报告。但我想在所有 VDI 上并行运行清理,而不是一个接一个地运行每个循环..因此我尝试过 foreach -parallel 但它不起作用。请建议我如何修改此脚本以在所有 VDI 上并行执行清理
$inputfile="H:\Ignio\Lastlogon\vdi List 3.csv"
$AllVDI = Get-Content $inputfile
$collection = @()
$file = "C:\report.csv"
$starters = (Get-Date)
ForEach-Object -parallel ($VDI in $AllVDI){
if((Test-Connection -Computername $VDI -count 1 -ErrorAction 0)) {
$Isonline = "Online"
if((Test-WSMan -Computername $VDI -ErrorAction 0)){
$Remoting = "Enabled"
Invoke-Command -Computername $VDI -Credential $cred -ScriptBlock {
Stop-Service -name wuauserv -Force -Confirm:$false -ErrorAction Ignore -WarningAction Ignore
Remove-Item -Path "C:\windows\Temp\*" -Recurse -Force -ErrorAction Ignore
Remove-Item -Path "C:\windows\Softwaredistribution\download\*" -Recurse -Force -ErrorAction Ignore
Start-Service -name wuauserv -Confirm:$false -ErrorAction Ignore }
$Space = Invoke-Command -Computername $VDI -Credential $cred -ScriptBlock {Get-WmiObject Win32_Logicaldisk -Filter "deviceid='C:'"}|Select-Object Systemname,@{ name = "Drive" ; Expression = { ( $_.deviceid ) } },@{ name = "Size (GB)" ; Expression = {"{0:N1}" -f ( $_.Size / 1gb)}},@{ name = "FreeSpace (GB)" ; Expression = {"{0:N1}" -f ( $_.Freespace / 1gb ) } },$free = $Space.'FreeSpace (GB)'
$Size = $Space.'Size (GB)'
$Drive=$Space.Drive
$Action=" Yes"
}
else {$Remoting = "Disabled";}
}
else {$Isonline = "Offline";}
$object = [PSCustomObject]@{
'VDI' = $VDI
'Status'="$Isonline"
'WinRM'="$Remoting"
'CleanUp Performed'=$Action
'Drive'=$Drive
'Size (GB)'=$Size
'FreeSpace (GB)'= $free
}
$collection += $object
}
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的使 powershell 中的每个循环在不同的服务器上并行运行全部内容,希望文章能够帮你解决使 powershell 中的每个循环在不同的服务器上并行运行所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。