[TR] PowerCLI ile VMware Datastore’a Dosya (ISO) Kopyalamak

[TR] PowerCLI ile VMware Datastore’a Dosya (ISO) Kopyalamak

Sanallaştırma ortamlarında yeni bir sanal makine kurarken en sık yaptığımız işlemlerden biri ISO dosyasını ESXi host üzerindeki datastore’a yüklemektir. Özellikle merkezi yönetim araçları yerine komut satırını tercih eden sistem yöneticileri için VMware PowerCLI bu işlemi hızlı ve güvenilir şekilde gerçekleştirme imkânı sunar.

Bu makalemde yerel bilgisayarınızda bulunan bir ISO dosyasını VMware ESXi veya vCenter ortamındaki bir datastore’a PowerCLI kullanarak nasıl kopyalayabileceğinizi adım adım ve anlaşılır bir şekilde ele alacağız.

Senaryo

Bu örnekte:

  • Yerel bilgisayarımızda bulunan Windows2022.iso dosyasını,
  • ESXi host üzerindeki bir datastore içerisinde bulunan ISO klasörüne,
  • PowerCLI kullanarak kopyalayacağız.

Ön Gereksinimler

İşleme başlamadan önce aşağıdaki gereksinimlerin sağlandığından emin olun:

  • Windows sistem üzerinde VMware PowerCLI kurulu olmalı.
  • ESXi host veya vCenter Server erişim bilgileriniz hazır olmalı.
  • Hedef datastore içerisinde ISO dosyasını koyacağınız klasör (örneğin ISO) mevcut olmalı.
  • Kullanıcı hesabınızın datastore’a yazma yetkisi bulunmalı.
# PowerCLI - ISO dosyasını VMware Datastore'a kopyalama
$server        = "<hostname_or_vcenter>"
$datastoreName = "<datastore_adi>"
$localIsoPath  = "C:\ISO\Windows2022.iso"
$destFolder    = "ISO"   # datastore içindeki klasör

Connect-VIServer -Server $server

$datastore = Get-Datastore -Name $datastoreName

# ds: adında PSDrive oluştur (varsa hata vermesin)
if (-not (Get-PSDrive -Name ds -ErrorAction SilentlyContinue)) {
    New-PSDrive -Name ds -PSProvider VimDatastore -Root "\" -Location $datastore | Out-Null
}

# Hedef klasör yoksa oluştur
$destPath = "ds:\$destFolder\"
if (-not (Test-Path $destPath)) {
    New-Item -ItemType Directory -Path $destPath | Out-Null
}

# Kopyala
Copy-DatastoreItem -Item $localIsoPath -Destination $destPath

# İsteğe bağlı: bağlantıyı kapat
Disconnect-VIServer -Server $server -Confirm:$false