İçeriğe geç
Rhino Türkiye

Wiki

PowerShell Script Örneği - Gelişmiş Dağıtım

Rhino kurulumu için PowerShell script örnekleri - Gelişmiş hata kontrolü, remote deployment, conditional installation ve reporting.

PowerShell scriptleri, batch dosyalarından daha güçlü ve esnek deployment imkanları sunar. Özellikle büyük ölçekli kurumsal deployment'larda, remote kurulum senaryolarında ve detaylı hata yönetimi gereken durumlarda tercih edilir.

Temel PowerShell Script

  • $MSIFile = 'rhino_en-us_8.x.x.msi'
  • $LogFile = 'C:\Logs\rhino_install.log'
  • Write-Host 'Rhino 8 kurulumu başlıyor...' -ForegroundColor Green
  • $Arguments = @('/i', $MSIFile, '/quiet', '/norestart', '/l*v', $LogFile)
  • Start-Process msiexec -ArgumentList $Arguments -Wait -NoNewWindow
  • if ($LASTEXITCODE -eq 0) { Write-Host 'Kurulum başarılı!' -ForegroundColor Green }
  • else { Write-Host "Kurulum başarısız! Exit code: $LASTEXITCODE" -ForegroundColor Red }

Gelişmiş Script - Try/Catch ve Logging

  • $ErrorActionPreference = 'Stop'
  • try {
  • $MSI = '\\server\rhino\rhino.msi'
  • $Log = "C:\Logs\rhino_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
  • New-Item -ItemType Directory -Force -Path 'C:\Logs' | Out-Null
  • Write-Host "Kurulum başlıyor: $(Get-Date)" -ForegroundColor Cyan
  • $Args = @('/i', $MSI, '/quiet', '/norestart', 'ALLUSERS=1', '/l*v', $Log)
  • $Process = Start-Process msiexec -ArgumentList $Args -Wait -NoNewWindow -PassThru
  • if ($Process.ExitCode -eq 0) { Write-Host 'Başarılı!' -ForegroundColor Green }
  • else { throw "Exit code: $($Process.ExitCode)" }
  • } catch { Write-Host "Hata: $_" -ForegroundColor Red; exit 1 }

Pre-Installation Checks

  • # Administrator kontrolü
  • $IsAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
  • if (-not $IsAdmin) { Write-Host 'Administrator hakları gerekli!' -ForegroundColor Red; exit 1 }
  • # Disk alanı kontrolü (5 GB)
  • $Drive = Get-PSDrive C
  • if ($Drive.Free -lt 5GB) { Write-Host 'Yetersiz disk alanı!' -ForegroundColor Red; exit 1 }
  • # Mevcut Rhino kontrolü
  • $RhinoInstalled = Test-Path 'C:\Program Files\Rhino 8\System\Rhino.exe'
  • if ($RhinoInstalled) { Write-Host 'Rhino zaten kurulu!' -ForegroundColor Yellow }

Zoo Sunucu ile Kurulum

  • $ZooServer = 'zoo.firma.com'
  • # Zoo sunucu bağlantı testi
  • $ZooTest = Test-NetConnection $ZooServer -Port 80 -InformationLevel Quiet
  • if (-not $ZooTest) {
  • Write-Host "Zoo sunucuya erişilemiyor: $ZooServer" -ForegroundColor Red
  • exit 1
  • }
  • $Args = @('/i', 'rhino.msi', '/quiet', "/l*v C:\Logs\rhino.log", "ZOO_SERVER=$ZooServer", 'ALLUSERS=1')
  • Start-Process msiexec -ArgumentList $Args -Wait -NoNewWindow

Remote Deployment - Çoklu Bilgisayar

  • $Computers = Get-Content 'C:\computers.txt'
  • $MSIPath = '\\server\rhino\rhino.msi'
  • foreach ($Computer in $Computers) {
  • Write-Host "Kurulum başlıyor: $Computer" -ForegroundColor Cyan
  • Invoke-Command -ComputerName $Computer -ScriptBlock {
  • param($MSI)
  • $Args = @('/i', $MSI, '/quiet', '/norestart', 'ALLUSERS=1')
  • Start-Process msiexec -ArgumentList $Args -Wait -NoNewWindow
  • } -ArgumentList $MSIPath
  • Write-Host "Tamamlandı: $Computer" -ForegroundColor Green
  • }

Email Notification - SMTP ile Durum Raporu

  • $SMTPServer = 'smtp.firma.com'
  • $From = 'it@firma.com'
  • $To = 'admin@firma.com'
  • $Subject = "Rhino Kurulum Raporu - $env:COMPUTERNAME"
  • $Body = "Kurulum tamamlandı. Exit code: $LASTEXITCODE`nZaman: $(Get-Date)`nBilgisayar: $env:COMPUTERNAME"
  • Send-MailMessage -SmtpServer $SMTPServer -From $From -To $To -Subject $Subject -Body $Body
  • Write-Host 'Email raporu gönderildi' -ForegroundColor Green

Version Check ve Conditional Install

  • # Mevcut Rhino versiyonunu kontrol et
  • $RhinoExe = 'C:\Program Files\Rhino 8\System\Rhino.exe'
  • if (Test-Path $RhinoExe) {
  • $Version = (Get-Item $RhinoExe).VersionInfo.FileVersion
  • Write-Host "Mevcut versiyon: $Version" -ForegroundColor Yellow
  • # Version karşılaştır, gerekirse upgrade yap
  • if ($Version -lt '8.15.0.0') {
  • Write-Host 'Eski versiyon, güncelleme yapılıyor...' -ForegroundColor Cyan
  • # Kurulum kodu buraya
  • }
  • }

Kaynak