Freigeben über


Beispiel: RemoveCacheHost-Skript

In diesem Abschnitt wird ein Windows PowerShell-Beispielskript (RemoveCacheHost.ps1) zur Verfügung gestellt. Dieses Skript entfernt einen Cachehost automatisch aus einem Cachecluster. Eine Erläuterung der in diesem Skript verwendeten Befehle finden Sie unter Automatisierte Installation und Konfiguration. Das Beispielskript RemoveCacheHost führt die folgenden Aktionen aus:

  • Es versucht den Cachehost als Vorbereitung des Entfernungsvorgangs zu beenden.

  • Es hebt die Registrierung des Cachehosts im Cachecluster auf.

  • Es entfernt die Konfiguration des Cachediensts.

  • Es entfernt die Konfiguration der Cacheverwaltungsfunktion.

  • Es deaktiviert die integrierte Windows-Firewallrichtlinie für AppFabric-Cache.

Beispiel: Skript "RemoveCacheHost"

Kopieren Sie zum Verwenden des RemoveCacheHost-Skripts zuerst den Inhalt des folgenden Windows PowerShell-Skripts in einer Textdatei, und speichern Sie die Datei anschließend als RemoveCacheHost.ps1. Lesen Sie dann die Informationen in der Skriptdatei, damit Sie verstehen, wie das Skript angepasst und ausgeführt wird.

param([switch]$RemoveCacheCluster, [string]$Pvd, [string]$ConnStr)

##########################
# Customizable Variables #
##########################
$provider = "System.Data.SqlClient"
#$provider = "XML"
$host_name = $env:COMPUTERNAME
$cache_port = 22233

# If System.Data.SqlClient:
$database_name = "CacheClusterConfigurationDB"
$database_server = "SQLServer1"
# If XML Provider:
$share_location = "\\Server1\CacheConfigShare"

##############
# Initialize #
##############

Import-Module DistributedCacheAdministration
Import-Module DistributedCacheConfiguration

$connection_string = ""

if ($provider -eq "System.Data.SqlClient")
{
   $connection_string = "Data Source=" + $database_server + `
      ";Initial Catalog=" + $database_name + `
      ";Integrated Security=True"
}

if ($provider -eq "XML")
{
   $connection_string = $share_location
}

# If provided, command-line parameters override 
# internal script variables:
if ($Pvd)
{
   $provider = $Pvd
}
if ($ConnStr)
{
   $connection_string = $ConnStr
}

#####################
# Remove Cache Host #
#####################

Write-Host "`nUse-CacheCluster -Provider $provider -ConnectionString"`
   "`"$connection_string`"" -ForegroundColor Green
Use-CacheCluster -Provider $provider -ConnectionString $connection_string

#Make sure the cache host is stopped
$Get_CacheHost_Command = Get-CacheHost -HostName $host_name -CachePort $cache_port

if ($Get_CacheHost_Command.Status -eq "Up")
{
   Write-Host "`nStop-CacheHost -HostName $host_name -CachePort $cache_port" -ForegroundColor Green
   Stop-CacheHost -HostName $host_name -CachePort $cache_port
}

$Get_CacheHost_Command = Get-CacheHost -HostName $host_name -CachePort $cache_port

if ($Get_CacheHost_Command.Status -eq "Down")
{
   Write-Host "`nUnregister-CacheHost -Provider $provider -ConnectionString `"$connection_string`" " `
      "-HostName $host_name -RemoveServicePermissions" -ForegroundColor Green
   Unregister-CacheHost -Provider $provider -ConnectionString $connection_string `
      -HostName $host_name -RemoveServicePermissions
   
   Write-Host "`nRemove-CacheHost" -ForegroundColor Green
   Remove-CacheHost
   
   Write-Host "`nRemove-CacheAdmin" -ForegroundColor Green
   Remove-CacheAdmin
   
   ########################
   # Remove Cache Cluster #
   ########################
   
   # Look for a parameter that specifies this is a new cache cluster
   if ($RemoveCacheCluster)
   {
      Write-Host "`nRemove_CacheCluster -Provider $provider -ConnectionString "`
         "`"$connection_string`" -Force" -ForegroundColor Green
      Remove-CacheCluster -Provider $provider -ConnectionString $connection_string -Force
   }
   
   ##########################
   # Configure the Firewall #
   ##########################
   Write-Host "`nConfigure the firewall..." -ForegroundColor Green
   netsh advfirewall firewall set rule `
      group="Windows Server AppFabric: AppFabric Caching Service" new enable=No | Out-Null
   
   # Uncomment the following lines only if other services do not need Remote Service Management.
   #netsh advfirewall firewall set rule `
   #   name=\"Remote Service Management (RPC)\" profile=domain new enable=No | Out-Null
   #netsh advfirewall firewall set rule `
   #   name=\"Remote Service Management (RPC-EPMAP)\" profile=domain new enable=No | Out-Null
   #netsh advfirewall firewall set rule `
   #   name=\"Remote Service Management (NP-In)\" profile=domain new enable=No | Out-Null 
}
else
{
   Write-Host "`nUnable to stop the host $host_name (Port:$cache_port)`n`n" -ForegroundColor Red
}

Anpassen des Skripts "RemoveCacheHost"

Es stehen zwei Optionen zur Verfügung, um das Skript für Ihren Verwendungszweck anzupassen. Sie können die Werte für die Variablen im Abschnitt "Customizable Variables" des Skripts anpassen. Wenn Sie z. B. den Anbieter XML verwenden, legen Sie die Variable $provider auf "XML" fest, und legen Sie dann $share_location auf die Netzwerkfreigabe fest, die für den Konfigurationsspeicher verwendet werden soll. Passen Sie die anderen Variablen gemäß Ihren besonderen Anforderungen an. Beachten Sie, dass die Variablen $database_name und $database_server nur erforderlich sind, wenn Sie den Anbieter System.Data.SqlClient verwenden. Die Variable $share_location ist nur erforderlich, wenn Sie den Anbieter XML angeben.

Die andere Option besteht im Verwenden der Skriptparameter Pvd und ConnStr, um den Anbieter und die Verbindungszeichenfolge manuell über die Befehlszeile anzugeben. Diese Parameter setzen die internen Variableneinstellungen außer Kraft.

Ausführen des Skripts "RemoveCacheHost"

Der folgende Befehl entfernt den lokalen Server aus dem Cachecluster.

RemoveCacheHost

Der folgende Befehl entfernt den lokalen Server aus dem Cachecluster und entfernt außerdem den Cachecluster. Diese Aktion kann ausgeführt werden, wenn der letzte Cachehost aus einem Cachecluster entfernt wird.

RemoveCacheHost -RemoveCacheCluster

Das folgende Beispiel zeigt, wie der Anbieter und die Verbindungszeichenfolge manuell über die Befehlszeile angegeben werden.

RemoveCacheHost.ps1 -Pvd System.Data.SqlClient -ConnStr "DataSource=SQLServer1;Initial Catalog=CustomConfigDB;Integrated Security=True"

Beachten Sie, dass das Skript manchmal nicht in der Lage ist, den angegebenen Cachehost zu beenden. Unter diesen Umständen müssen Sie den Cachecluster mithilfe des Befehls Stop-CacheCluster beenden, bevor Sie den Cachehost mit dem Skript entfernen.

Siehe auch

Konzepte

Automatisierte Installation und Konfiguration

  2012-03-05