$LogFile= "c:\toolsupgrade.txt" #Log dizininin belirtildiği kısımdır. $TimeStamp = Get-Date -Format "dd/MM/yy HH:mm:ss" #Log dosyasına tarih/saat yazmak için kullanılır. $VMs = Import-Csv -Path C:\Temp\servers.csv -UseCulture | select -ExpandProperty VMName Foreach ($VM in $VMs ) { $vmtoolscheck= Get-VM -Name $VM | % { get-view $_.id } | select name, @{Name=“ToolsVersion”; Expression={$_.config.tools.toolsversion}}, @{ Name=“ToolStatus”; Expression={$_.Guest.ToolsVersionStatus}}|Sort-Object Name $toolsstatus= $vmtoolscheck.ToolStatus $toolsversion= $vmtoolscheck.ToolsVersion try { if ($toolsstatus -match "guestToolsNeedUpgrade" ) { write-Output "$TimeStamp $VM sunucusunun vmtools versiyonu $toolsversion dur. " | out-file -FilePath "$LogFile" -Append Write-Output "$TimeStamp $VM sunucusunun vmtools upgrade işlemi yapılacaktır. Çalışma öncesinde sunucuda snapshot alınacaktır." | out-file -FilePath "$LogFile" -Append Get-VM -Name $VM| New-Snapshot -Name BeforeVMToolsUpgrade -Description "$date tarihinde $DomainUsername tarafından alınmıştır." -Confirm:$false Write-Output "$TimeStamp $VM sunucusunun snapshot'ı alınmıştır." | out-file -FilePath "$LogFile" -Append Update-Tools -VM $VM -ErrorAction Stop | out-file -FilePath "$LogFile" -Append $vmtoolscheck= Get-VM -Name $VM | % { get-view $_.id } | select name, @{Name=“ToolsVersion”; Expression={$_.config.tools.toolsversion}}, @{ Name=“ToolStatus”; Expression={$_.Guest.ToolsVersionStatus}}|Sort-Object Name $toolsversion= $vmtoolscheck.ToolsVersion Write-Output "$TimeStamp $VM sunucusunun vmtools versiyonu $toolsversion olmuştur " | out-file -FilePath "$LogFile" -Append } else { write-Output "$TimeStamp $VM sunucusunun vmtools versiyonu günceldir toolsversion: $toolsversion " | out-file -FilePath "$LogFile" -Append } } catch { Write-host "DİKKAT: vmware tools upgrade edilemedi !!! $LogFile dizinindeki log dosyasını kontrol ediniz." -ForegroundColor Red Write-Output "$TimeStamp HATA: $TimeStamp $VM sunucusunda vmware tools upgrade edilemedi.!!! : " $Error[0] | Out-File -FilePath $LogFile -Append } }