Invoke-Command ile Yapılabilecekler

Invoke-Command ile Yapılabilecekler

Merhaba, bu yazımda sizlere Invoke-Command ile yapılabilecekler konusundan bahsedeceğim. PowerShell, sistem yöneticileri için güçlü bir araçtır ve iş akışlarını otomatikleştirmek için birçok özellik sunar. Bu özelliklerden biri olan Invoke-Command, uzak bilgisayarlarda komutlar çalıştırmanıza olanak tanır. Bu komut, büyük bir ağda merkezi bir kontrol sağlar ve özellikle uzak yönetim senaryolarında son derece faydalıdır. Bu makalede, Invoke-Command komutunun nasıl kullanılacağını detaylı bir şekilde inceleyeceğiz ve gerçek dünya örnekleriyle anlatacağız.

Microsoft tarafında aşağıdaki linki inceleyebilirsiniz.

Invoke Command

Invoke-Command Nedir?

Invoke-Command, PowerShell’in uzak bilgisayarlarda komut çalıştırmak için kullanılan bir cmdlet’idir. Bu komut sayesinde birden fazla bilgisayara aynı anda komut gönderebilir, çıktıları toplayabilir ve merkezi bir şekilde işlem yapabilirsiniz.

Temel kullanım şu şekildedir:

Invoke-Command -ComputerName “Server01” -ScriptBlock { Get-Process }

Yukarıdaki örnekte, Server01 isimli uzak bilgisayarda Get-Process komutunu çalıştırır ve sonuçları yerel makineye döndürür.

Temel Kullanım Senaryoları

1. Uzak Bilgisayarda Basit Komut Çalıştırma

En temel kullanım şekli, tek bir uzak bilgisayarda komut çalıştırmaktır. Örneğin, bir sunucudaki hizmetlerin durumunu kontrol etmek isteyebilirsiniz:

Invoke-Command -ComputerName “Server01” -ScriptBlock { Get-Service }

Bu komut, Server01 üzerinde çalışan tüm hizmetleri listeler.

2. Birden Fazla Bilgisayarda Komut Çalıştırma

Ağınızda birden fazla bilgisayara aynı komutu göndermek isteyebilirsiniz. Bu durumda, ComputerName parametresine birden fazla bilgisayar adı verebilirsiniz:

Invoke-Command -ComputerName “Server01”, “Server02”, “Server03” -ScriptBlock { Get-Service }

Bu komut, belirtilen üç sunucuda da Get-Service komutunu çalıştırır ve sonuçları toplar.

3. Parametrelerle ScriptBlock Kullanımı

Invoke-Command, ScriptBlock içinde parametre kullanmanıza da izin verir. Bu, daha dinamik komutlar çalıştırmanıza olanak tanır:

$scriptBlock = {

    param($serviceName)

    Get-Service -Name $serviceName}

Invoke-Command -ComputerName “Server01” -ScriptBlock $scriptBlock -ArgumentList “W32Time”

Bu örnekte, Server01 üzerindeki W32Time hizmetinin durumu kontrol edilir.

Gelişmiş Kullanım Senaryoları

1. Uzak İşlemleri Arka Planda Çalıştırma

Bazı durumlarda, bir uzak işlem başlatmak ve bu işlemi arka planda çalıştırmak isteyebilirsiniz. Bu tür işlemler için -AsJob parametresi kullanılabilir:

Invoke-Command -ComputerName “Server01” -ScriptBlock { Start-Sleep -Seconds 30; “Completed” } -AsJob

Bu komut, Server01 üzerinde 30 saniyelik bir bekleme süresi başlatır ve ardından “Completed” mesajını döndürür. İş arka planda çalıştığı için, bu komutun sonucunu almak için Receive-Job cmdlet’ini kullanabilirsiniz.

2. Uzak Bilgisayarlardan Dosya İndirme ve Yükleme

Invoke-Command, uzak bilgisayarlardan dosya indirmek veya yüklemek için kullanılabilir. Örneğin, uzak bir bilgisayardaki bir dosyayı yerel bilgisayarınıza kopyalamak için Copy-Item cmdlet’i kullanılabilir:

Invoke-Command -ComputerName “Server01” -ScriptBlock { Copy-Item “C:\RemoteFolder\File.txt” -Destination “\\LocalPC\SharedFolder” }

Bu komut, Server01 üzerindeki File.txt dosyasını yerel bilgisayarınızda paylaşılan bir klasöre kopyalar.

3. Uzak Bilgisayarlarda Yazılım Kurulumu

Bir ağ üzerinde aynı yazılımı birden fazla bilgisayara kurmanız gerektiğinde Invoke-Command son derece kullanışlıdır. Örneğin, bir MSI dosyasını uzak bilgisayarlara kurmak isteyebilirsiniz:

$computers = “Server01”, “Server02”, “Server03”

$msiPath = “\\SharedFolder\Software.msi”

Invoke-Command -ComputerName $computers -ScriptBlock {

    Start-Process msiexec.exe -ArgumentList “/i”, $using:msiPath, “/quiet”, “/norestart” -Wait}

Bu komut, belirtilen sunucularda Software.msi dosyasını sessizce yükler.

4. Uzak Bilgisayarlarda Güç Yönetimi

Uzak bilgisayarları kapatma veya yeniden başlatma işlemleri de Invoke-Command ile yapılabilir. Örneğin, bir sunucuyu yeniden başlatmak için:

Invoke-Command -ComputerName “Server01” -ScriptBlock { Restart-Computer -Force }

Bu komut, Server01 sunucusunu zorla yeniden başlatır.

Güvenlik ve Yetkilendirme

Invoke-Command kullanırken, güvenlik ve yetkilendirme kritik öneme sahiptir. Bu komut, uzak bilgisayarlarda komut çalıştırdığı için uygun yetkilere sahip olmanız gerekir. Bunun için -Credential parametresi ile farklı bir kullanıcı adı ve şifre kullanabilirsiniz:

$cred = Get-Credential

Invoke-Command -ComputerName “Server01” -ScriptBlock { Get-Process } -Credential $cred

Bu örnekte, Server01 üzerinde Get-Process komutunu çalıştırmak için belirttiğiniz kimlik bilgilerini kullanırsınız.

Invoke-Command, PowerShell’de uzak yönetim için son derece esnek ve güçlü bir cmdlet’tir. Bu makalede, temel ve gelişmiş kullanım senaryoları ile bu komutun gücünü ve çok yönlülüğünü inceledik. Invoke-Command, özellikle geniş ağlarda ve sunucu çiftliklerinde merkezi yönetim sağlamak için vazgeçilmez bir araçtır. Uzak bilgisayarlarda komut çalıştırma, yazılım yükleme, dosya transferi ve sistem yönetimi gibi işlemleri otomatikleştirmek için kullanabileceğiniz bu komut, zaman kazandırır ve verimliliği artırır.

Bir domain’de bir bilgisayara yerel yönetici (local admin) eklemek için invoke-command komutunu kullanabilirsiniz. Aşağıda bu işlemi gerçekleştirmek için kullanabileceğiniz PowerShell komutu bulunmaktadır:

Invoke-Command -ComputerName “TargetComputerName” -ScriptBlock {

    Add-LocalGroupMember -Group “Administrators” -Member “DomainName\UserName”

} -Credential (Get-Credential)

Açıklamalar:

  • Invoke-Command: Uzaktan bir bilgisayarda komut çalıştırmak için kullanılır.
  • -ComputerName “TargetComputerName”: Yerel yönetici eklemek istediğiniz bilgisayarın adını girin.
  • -ScriptBlock {}: Bu blok içine çalıştırılacak komutları yerleştiriyoruz.
  • Add-LocalGroupMember -Group “Administrators” -Member “DomainName\UserName”: Belirtilen kullanıcıyı yerel yönetici grubuna ekler. DomainName\UserName yerine doğru değerleri girin.
  • -Credential (Get-Credential): Gerekli kimlik doğrulama bilgilerini girmek için bu parametreyi kullanın.

Bu komutu çalıştırırken, hedef bilgisayarın uzaktan yönetim için yapılandırılmış olduğundan emin olmalısınız. Bu yazımda sizlere Invoke-Command ile yapılabilecekler konusundan bahsettim. Faydalı olması dileğiyle.


 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir