Uzak IIS uygulama havuzunu komut satırından geri dönüştür?


26

IIS7 uygulama havuzunu komut satırından farklı bir makinede geri dönüştürmek mümkün müdür?

APPCMD ( appcmd recycle apppool my-app-pool) öğesini buldum , ancak yalnızca çalıştırıldığı ana bilgisayarda, AFAICT'de çalışıyor.

Powershell ile yapmanın bir yolu olabileceğine dair bir söylenti duydum, ama bunun hakkında hiçbir şey bilmiyorum ve görünüşe göre bunun için googling konusunda pek iyi değilim.

Önemli olursa Vista / Server 2008 kullanıyorum.

EDIT: Birinin APPCMD'yi çalıştırabileceğini iddia ettiği WinRM adlı bir şey buldum , fakat henüz tam olarak nasıl olduğundan emin değilim.

Yanıtlar:


28

Ken, eğer bu CMD'den çalıştırılıyorsa, PSExec ile yapabilirsiniz . Bu, erişmek istediğiniz sunucuya kurulum gerektirmez.

Sadece FROM'a yönlendirmek istediğiniz bilgisayarın zip dosyasını içeriğini System32 dosyasına (ELUA veya DLL dosyasını dahil etmeyin) kopyalayın.
Ardından CMD
tipini girin
Psexec \\{Computer Name of ISS7 Server} %systemroot%\System32\inetsrv\appcmd recycle apppool my-app-pool

Bir etki alanı yönetici hesabında aynı etki alanında değilseniz, yönetici erişimi için kimlik bilgileri girmeniz gerekir. Daha fazla bilgi için, basitçe komut satırına argümanları olmadan psexec yazın.


4
AppCmd.exe konumu (% systemroot% \ system32 \ inetsrv) PATH'nin otomatik olarak bir parçası değildir. Yolunuza ekleyebilir veya appcmd dosyasını şu şekilde çalıştırabilirsiniz: "% systemroot% \ system32 \ inetsrv \ AppCmd.exe"
ashtonium

1
RemoteEx komutunu PsExec için alıntı yapmazsınız; Komut adını ve ardından boşluklarla ayrılmış tüm argümanları gönderirsiniz. Öyleyse komut şöyle olmalı:Psexec \\computer c:\windows\system32\inetsrv\appcmd.exe" recycle apppool AppPoolName
Carl G

6

Bunu PowerShell'den uzaktan yapmak için, PowerShell uzaktan kumandasını kullanmanız veya WMI kullanmanız gerekir.

Invoke-WMIMethod PowerShell cmdlet'ini kullanmak gerçekten çok basittir, ancak belirtmeniz -Authentication PacketPrivacy gerekir ... ve farklı kimlik bilgileri belirtmeniz gerekiyorsa, bunu parametre ile yapabilirsiniz -Credential (Get-Credential)... işte bir örnek:

$pc = "serverName"

## List the app pools, note the __RELPATH of the one you want to kill:
Get-WMIObject IISApplicationPool 
              -Computer $pc 
              -Namespace root\MicrosoftIISv2 
              -Authentication PacketPrivacy 

## Recycle a specific one:
$Name = "W3SVC/APPPOOLS/ASP.NET v4.0 Classic"  ## This is the Name from above
$Path = "IISApplicationPool.Name='$Name'"      ## This is the __RELPATH

Invoke-WMIMethod Recycle 
                 -Path $Path 
                 -Computer $pc 
                 -Namespace root\MicrosoftIISv2 
                 -Authentication PacketPrivacy

Hepsini sarmak için hoş bir fonksiyon yazdım: http://poshcode.org/2466


3
Kullanılabilir kök \ MicrosoftIISv2 ad alanı için IIS7'de "IIS 6 WMI Uyumluluğu" özelliğini etkinleştirmeniz gerekebilir. forums.iis.net/t/1158882.aspx
Brian Düşük

3

Komut satırı sizin seçiminiz ise, PsExec çözüm gibi görünüyor, ancak kritik görevler için bunu tavsiye etmem. Nedeni şudur: PsExec, birden fazla çalıştırmada sorun yaşıyor .

Bu tür amaçlar için API kullanmayı tercih ederim.

  1. WMI, işi burada açıklandığı şekilde yapar (en sevdiğim çözüm).
  2. Alternatif olarak, ServerManager API'sini kullanabilirsiniz . Kodunuzu karşılık gelen kimlik bilgileriyle çalıştırırsanız , uzak havuzdaki uygulama havuzlarını yönetmenizi sağlar .

2

@ Jeff’in cevabına benzer şekilde, Powershell’in uzaktan uyarlamasıyla:

Enter-PSSession -ComputerName <your server> -Credential <username, or (Get-Credential)>

Sonra etkileşimli oturumda, sonra:

appcmd recycle apppool my-app-pool

Uygulama havuzunu yeniden başlatmak için


0

PowerPhell'de AppPool'u Geri Dönüştürün

Bu örnekte: MSExchangeSyncAppPool

$appPool = Get-WmiObject -Authentication PacketPrivacy -Impersonation Impersonate -ComputerName (hostname) -namespace "root/MicrosoftIISv2" -class IIsApplicationPool | Where-Object {$_.Name -eq "W3SVC/AppPools/MSExchangeSyncAppPool" }
$appPool.Recycle()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.