Partage via


Script Windows PowerShell pour configurer la limitation sur plusieurs ordinateurs

Cet exemple illustre la configuration des valeurs de limitation de service par défaut pour plusieurs ordinateurs d'une batterie à l'aide d'un script Windows PowerShell. Cet exemple peut être facilement modifié pour changer les autres paramètres accessibles depuis AppFabric.

La gestion d'une batterie de serveurs peut se révéler fastidieuse lorsque vous êtes amené à vous connecter à chaque ordinateur individuellement pour modifier un paramètre unique. Ce problème prend de l'ampleur lorsque les ordinateurs sont nombreux dans la batterie ou que ce type de modification doit être effectué régulièrement. Les fonctionnalités de persistance et de surveillance de Microsoft AppFabric 1.1 pour Windows Server facilitent l'extraction des informations sur les ordinateurs actifs d'une batterie directement depuis la base de données et l'utilisation de celles-ci pour exécuter des commandes Windows PowerShell sur ces ordinateurs.

Cet exemple montre l'extraction d'informations des ordinateurs d'une batterie et l'exécution de cmdlets Windows PowerShell sur tous les ordinateurs actifs dans dans celle-ci.

Cet exemple est adapté à toutes les applications. Nous recommandons l'exemple d'application courante d'AppFabric créé pour être utilisé avec les exemples AppFabric. Pour trouver cette application, accédez au dossier <exemples>\SampleApplication\OrderApplication, où <exemples> représente le chemin d'accès aux exemples AppFabric.

Notes

Les exemples sont fournis à titre éducatif uniquement. Ils ne sont pas destinés à être utilisés dans un environnement de production et n'ont pas été testés à cet usage. Microsoft ne fournit aucune assistance technique pour ces exemples.

Conditions préalables

Cet exemple peut être exécuté sur un ou plusieurs ordinateurs remplissant les conditions suivantes. Si vous envisagez d'exécuter l'exemple sur un ordinateur, vous pouvez ignorer les références à l'utilisation de plusieurs ordinateurs.

  • Vous devez installer AppFabric sur tous les ordinateurs participant à l'exemple. Tous les ordinateurs doivent utiliser une base de données commune pour la persistance et/ou la surveillance.

  • Pour exécuter les scripts (tels que fournis), vous devez disposer des privilèges d'administrateur sur l'ordinateur sur lequel vous exécutez l'exemple. Selon les modifications souhaitées, vous devez éventuellement disposer des privilèges d'administrateur sur tous les autres ordinateurs.

  • Tous les ordinateurs qui participent doivent rejoindre un domaine unique. La Gestion à distance de Windows (WinRM) 2.0 doit être installée sur chacun d'eux. Vous pouvez télécharger WinRM 2.0 pour les plateformes de niveau inférieur à partir de la page Téléchargements WinRM 2.0 (https://go.microsoft.com/fwlink/?LinkId=194424). Cet exemple peut être modifié pour être exécuté dans un environnement hors domaine. Consultez la réponse à la question « PUIS-JE TESTER LA COMMUNICATION A DISTANCE SUR UN SEUL ORDINATEUR (PAS DANS UN DOMAINE) ? » dans le FAQ sur l'exécution des commandes distantes dans Windows PowerShell à l'adresse about_Remote_FAQ (https://go.microsoft.com/fwlink/?LinkId=194425).

  • Windows PowerShell doit être activé pour l'exécution à distance. Pour ce faire, exécutez Enable-PSRemoting -force une fois les deux conditions précédentes remplies. Pour plus d'informations sur la communication à distance Windows PowerShell, tapez help about_remote.

  • Tous les ordinateurs utilisés dans l'exemple doivent faire partie de la batterie (en d'autres termes, les mêmes applications et services doivent être installés sur chacun d'entre eux). Par ailleurs, leurs données de surveillance doivent être conservées ou rapportées au moins une fois dans la base de données commune.

  • La connectivité client de SQL et le composant logiciel enfichable SQL Server pour Windows PowerShell doivent être installés sur l'hôte qui exécutera l'exemple.

Fichiers de l'exemple

  • Script Get-ASActiveMachine.ps1 (dans le dossier Code)

  • Fichier Lisez-moi

Configuration et exécution de l'exemple

  1. Exécutez un hôte Windows PowerShell (telle que la console incluse avec Windows PowerShell 2.0) en tant qu'administrateur. Veillez à sélectionner « Exécuter en tant qu'administrateur » lors de l'exécution de l'hôte si vous n'utilisez pas le compte « Administrateur » intégré.

    Notes

    Pour exécuter l'exemple, vous devez autoriser l'exécution des scripts non signés sur l'ordinateur. Les étapes suivantes décrivent comment procéder.

  2. Dans l'hôte, exécutez la commande Set-ExecutionPolicy Unrestricted. Celle-ci vous permet d'exécuter l'exemple de script non signé. Veillez à rétablir ce paramètre une fois que vous avez terminé avec l'exemple. Si vous envisagez d'exécuter des scripts similaires dans votre environnement de production, il est recommandé de signer le script. Vous pouvez consulter davantage d'informations sur la signature des scripts à l'adresse about_Signing (https://go.microsoft.com/fwlink/?LinkID=194426).

Suppression de l'exemple

  1. Pour supprimer cet exemple, rétablissez votre stratégie d'exécution sur son niveau précédent ou sur la valeur par défaut pour Windows PowerShell à l'aide de la commande suivante : Set-ExecutionPolicy Default.

Démontre

Cet exemple est constitué de deux parties. La première partie décrit l'exécution des cmdlets (et plus précisément des cmdlets AppFabric) sur plusieurs ordinateurs. La seconde partie est une cmdlet de script permettant d'obtenir la liste des ordinateurs actifs dans une batterie. Enfin, un exemple montre l'utilisation des deux parties.

Configuration à distance

Si toutes les conditions décrites plus haut sont remplies, l'exécution des cmdlets sur les ordinateurs distants est simple. La cmdlet Invoke-Command à utiliser extrait les paramètres de tous les ordinateurs sur lesquels elle est exécutée et détermine le script à exécuter sur ces ordinateurs.

Important

En exécutant les étapes de cet exemple, vous modifiez la valeur « Nombre maximal d'appels simultanés » par défaut pour tous les services sur les ordinateurs sur lequel vous l'exécutez. Ceci peut affecter les environnements de production en exposant les serveurs à des attaques par déni de service ou en bloquant l'accès des appelants légitimes. Vous ne devez pas suivre les étapes suivantes dans un environnement de production sans sauvegarder vos systèmes et sélectionner une valeur appropriée pour votre environnement. Si vous n'êtes pas certain de la valeur appropriée pour le paramètre MaxConcurrentCalls, contactez votre architecte logiciel ou consultez la documentation du produit WCF à l'adresse MaxConcurrentCalls Property (https://go.microsoft.com/fwlink/?LinkId=194427).

Par exemple, supposons que vous souhaitez exécuter la commande AppFabric suivante :

Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200

Pour exécuter la commande sur les ordinateurs Dublin001 et Dublin002, vous devez taper une commande comme celle-ci :

Invoke-Command -ComputerName Dublin001,Dublin002 -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}

Notez que dans la définition du bloc de script (texte situé entre accolades), la première commande est Import-Module ApplicationServer. Ceci garantit que l'environnement distant créé par la commande Invoke-Command dispose des cmdlets AppFabric nécessaires.

Requête de base de données pour les ordinateurs actifs

Pour exécuter la commande précédente sur les ordinateurs d'une batterie, vous devez créer la liste des ordinateurs et l'utiliser pour fournir les arguments du paramètre ComputerName de l'exemple précédent. Vous pouvez également utiliser une cmdlet de script fournie avec cet exemple.

Cette cmdlet de script est nommée Get-ASActiveMachine. Celle-ci utilise un composant logiciel enfichable SQL Server pour Windows PowerShell pour extraire les ordinateurs actifs des données de surveillance d'AppFabric, puis utilise les cmdlets intégrées d'AppFabric pour obtenir la liste des ordinateurs actifs à partir des données de persistance. Enfin, le script combine les deux jeux de résultats et renvoie le résultat à l'appelant.

Pour installer cette cmdlet, exécutez la ligne suivante dans un hôte Windows PowerShell (tel que la console incluse dans Windows PowerShell 2.0) :

Import-Module <samples>\Samples\Management\MultiMachineConfiguration\Code\Get-ASActiveMachine.ps1

où <samples> est le chemin d'accès aux exemples AppFabric.

Vous pouvez ensuite exécuter la cmdlet suivante qui renvoie la liste des ordinateurs actifs dans la batterie :

Get-ASActiveMachine

Notes

Consultez la liste ci-dessous des paramètres extraits par cette cmdlet et leur utilisation si votre serveur SQL n'est pas installé en tant qu'instance par défaut sur l'ordinateur local et si la base de données de surveillance d'AppFabric n'est pas appelée « ApplicationServerMonitoring ».

La liste renvoyée ressemble à ce qui suit :

Dublin001
Dublin002

Pour combiner la configuration multiserveur avec cette cmdlet, exécutez la commande suivante :

Invoke-Command -ComputerName (Get-ASActiveMachine) -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}

Paramètres de la cmdlet Get-ASActiveMachine

-Server

Paramètre obligatoire. Lorsque vous utilisez SQL Server Express, définissez ce paramètre sur « <Nom_serveur>\SQLExpress ». Lorsque vous utilisez SQL Server Enterprise, définissez ce paramètre sur « <Nom_serveur> ».

-Database

Paramètre obligatoire. Chaîne permettant de spécifier la base de données de surveillance.

-SiteName

Paramètre facultatif. Paramètre de filtre de chaîne qui indique à la cmdlet de renvoyer uniquement les ordinateurs actifs pour le site spécifié.

-VirtualPath

Paramètre facultatif. Paramètre de filtre de chaîne qui indique à la cmdlet de renvoyer uniquement les ordinateurs actifs pour le chemin d'accès virtuel. Cette chaîne peut être utilisée avec le paramètre -SiteName pour spécifier que la cmdlet doit uniquement renvoyer les ordinateurs qui assurent l'équilibrage de la charge d'un service spécifique.

-ActiveSince

Paramètre facultatif. Objet DateTime qui peut être utilisé pour filtrer les seuls ordinateurs pour lesquels des données de surveillance sont conservées ou rapportées au cours d'une certaine période. Par exemple, pour renvoyer les données des dernières 24 heures, utilisez la commande suivante : Get-ASActiveMachine –ActiveSince (Get-Date).AddHours(-24).

-ApplicationObject

Paramètre facultatif. Objet Microsoft.ApplicationServer.Management.Data.ApplicationInfo qui peut être utilisé pour filtrer les seuls ordinateurs pour lesquels des données de surveillance relatives à une application spécifique sont conservées ou rapportées. Cet objet est particulièrement adapté aux scénarios de chaînage tels que Get-ASApplication –SiteName ‘Default Web Site’ –VirtualPath \OnboardingWorkflow | Get-ASActiveMachine.

Autres ressources

Pour plus d'informations sur l'exécution à distance de scripts Windows PowerShell, consultez la rubrique about_Remote (https://go.microsoft.com/fwlink/?LinkId=194428) ou tapez help about_remote dans un hôte Windows PowerShell host.

  2012-03-05