VMware ESXi host’larda ProductLocker konumunu değiştirmek ilk bakışta basit gibi görünse de pratikte çoğu zaman gereksiz derecede zahmetli bir sürece dönüşebiliyor.
Geçmişte bu işlemi yaparken script yazma SSH ile host’lara tek tek bağlanma, servis etkisini düşünme ve mümkünse reboot’tan kaçınma gibi konularla uğraşmak zorunda kalmıştım. Özellikle host sayısı arttıkça bu iş, küçük bir konfigürasyon değişikliğinden çıkıp operasyonel bir projeye dönüşüyor.
Yakın zamanda yaklaşık 10 adet yeni devreye aldığım VMware ESXi host üzerinde ProductLocker ayarlaması yapmamız gerekti. Bu noktada işlemin Managed Object Browser (MOB) üzerinden yapılabildiğini öğrendim.
Ancak 10 host için MOB’a tek tek girip manuel işlem yapmak pek mantıklı değildi. Doğal olarak bir sonraki sorum şu oldu.
“Bunu PowerCLI ile otomatik hale getiremez miyiz?”
Cevap: Evet, hem de oldukça basit bir şekilde.
ProductLocker Nedir ve Neden Değiştiririz?
ProductLocker, VMware Tools dosyalarının bulunduğu dizini ifade eder.
Varsayılan olarak bu dosyalar host üzerinde yerel bir dizinde tutulur. Ancak özellikle merkezi bir datastore üzerinde ortak bir VMware Tools repository kullanmak istediğinizde tüm host’ların aynı path’i işaret etmesi gerekir.
Bu yaklaşımın avantajları:
- VMware Tools güncellemelerini merkezi olarak yönetebilirsiniz.
- Host başına ayrı ayrı dosya tutma ihtiyacı ortadan kalkar.
- Tutarlılık sağlanır.
- Büyük ortamlarda yönetim kolaylaşır.
Örneğin merkezi bir repository yolu şöyle olabilir;
/vmfs/volumes/datastore_name/vmtoolsRepo
Amaç cluster içindeki tüm host’ların bu dizini kullanmasını sağlamaktır.
PowerCLI ile Cluster İçindeki Tüm Host’larda ProductLocker Ayarlama
İşin güzel tarafı şu. Bunu yapmak için karmaşık script’lere ihtiyacınız yok. İki basit foreach döngüsü yeterli.
Önce cluster içindeki tüm host’ları alıyoruz;
$allhosts = Get-Cluster "clustername" | Get-VMHost
Ardından her host için ProductLocker konumunu güncelliyoruz;
foreach ($hostname in $allhosts){
Get-VMHost -Name $hostname | %{
$_.ExtensionData.UpdateProductLockerLocation_Task("/vmfs/volumes/pathname")
}
}
Bu Kod Tam Olarak Ne Yapıyor?
Get-Cluster "clustername"→ Belirttiğiniz cluster’ı alır.Get-VMHost→ O cluster içindeki tüm ESXi host’ları listeler.ExtensionData→ vSphere API seviyesindeki metodlara erişmemizi sağlar.UpdateProductLockerLocation_Task()→ Host üzerinde ProductLocker konumunu değiştirir.
Buradaki önemli nokta bu işlem bir Task olarak çalışır. Yani arka planda bir görev başlatılır. Host’u reboot etmenize gerek kalmaz ve SSH erişimi de gerektirmez. Özellikle çok sayıda host’un bulunduğu ortamlarda bu yöntem ciddi zaman kazandırır.
Ayarlamanın Doğru Uygulandığını Kontrol Etmek
Yapılandırmayı yaptıktan sonra doğrulama yapmak her zaman iyi bir pratiktir. Bunun için aşağıdaki kodu kullanabilirsiniz.
$allhosts = Get-Cluster "clustername" | Get-VMHostforeach ($hostname in $allhosts){
Get-VMHost -Name $hostname | %{
$_.ExtensionData.QueryProductLockerLocation()
}
Write-Host $hostname -ForegroundColor Green
}
Bu script:
- Cluster’daki tüm host’ları dolaşır.
- Her biri için mevcut ProductLocker path’ini sorgular.
- Hangi host’un hangi dizini kullandığını görmenizi sağlar.
Böylece tüm host’ların gerçekten merkezi repository’yi işaret ettiğinden emin olabilirsiniz.
MOB Üzerinden Manuel Olarak Nasıl Yapılır?
Eğer işlemi otomasyon olmadan, manuel olarak yapmak isterseniz vCenter’ın Managed Object Browser (MOB) arayüzünü kullanabilirsiniz.
Erişim adresi genellikle şu şekildedir.
https://vcenter/mob
Giriş yaptıktan sonra aşağıdaki yolu izleyebilirsiniz;
Content > rootFolder > childEntity > hostFolder > host

Buradan ilgili ESXi host’u seçtiğinizde iki önemli API metodunu görebilirsiniz;
- QueryProductLockerLocation
Mevcut ProductLocker dizinini gösterir. - UpdateProductLockerLocation_Task
Yeni bir path girerek ProductLocker konumunu değiştirmenizi sağlar.

Manuel yöntem çalışır ancak 1-2 host için uygundur. 10, 20 ya da daha fazla host söz konusu olduğunda PowerCLI açık ara daha mantıklıdır.
Neden PowerCLI Yaklaşımı Daha Profesyonel?
- SSH erişimine gerek yok
- Host reboot gerektirmez
- Tüm cluster için tek seferde uygulanabilir
- Tekrarlanabilir ve dokümante edilebilir
- İnsan hatasını minimize eder
Özellikle kurumsal ortamlarda veya MSP yapılarında bu tarz konfigürasyonların script ile yapılması, operasyonel standartların korunması açısından çok daha sağlıklıdır.
![[TR] VMware PowerCLI ile ProductLocker Location Ayarlama (Reboot ve SSH Gerekmeden)](https://kadirkozan.com/wp-content/uploads/2026/02/VMware-logo-featured-1.jpg)
![[TR] VMware PowerCLI ile MAC Adresine Göre Sanal Makine Bulmak](https://kadirkozan.com/wp-content/uploads/2026/02/VMware-logo-featured-1-150x150.jpg)