Comment puis-je recycler un pool d'applications IIS avec Powershell?

Je n'ai pas vraiment fait de Windows scripting à tous, je suis à une perte sur la façon de tirer celui-ci hors. De toute façon, en gros ce que nous voulons faire est d'avoir un script qui va prendre un argument sur lequel IIS AppPool à recycler. J'ai fait quelques recherches sur Google et je n'ai pas eu beaucoup de succès, de mettre les choses au travail.

Voici ce que j'essaie maintenant:

$appPoolName = $args[0]
$appPool = get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPools" Where-Object {$_.Name -eq "W3SVC/APPPOOLS/$appPoolName"}
$appPool.Recycle()

et l'erreur que je reçois:

Get-WmiObject : A parameter cannot be found that matches parameter name '$_.Name -eq "W3SVC/APPPOOLS/$appPoolName"'.

De toute façon, ce serait bien si je savais aussi comment déboguer des choses comme ça. J'ai déjà corrigé un bug avec le script d'origine en faisant gwmi de l'espace de noms "root\MicrosoftIISv2" -liste. Tout les autres trucs comme ça serait génial.

Merci!

Mise à jour: Voici quelques infos

$appPool = gwmi -namespace "root\MicrosoftIISv2" -class "IISApplicationPools" | Get-Member
.   TypeName: System.Management.ManagementObject#root\MicrosoftIISv2\IIsApplicationPools
Name                MemberType   Definition
----                ----------   ----------
Caption             Property     System.String Caption {get;set;}
Description         Property     System.String Description {get;set;}
InstallDate         Property     System.String InstallDate {get;set;}
Name                Property     System.String Name {get;set;}
Status              Property     System.String Status {get;set;}
__CLASS             Property     System.String __CLASS {get;set;}
__DERIVATION        Property     System.String[] __DERIVATION {get;set;}
__DYNASTY           Property     System.String __DYNASTY {get;set;}
__GENUS             Property     System.Int32 __GENUS {get;set;}
__NAMESPACE         Property     System.String __NAMESPACE {get;set;}
__PATH              Property     System.String __PATH {get;set;}
__PROPERTY_COUNT    Property     System.Int32 __PROPERTY_COUNT {get;set;}
__RELPATH           Property     System.String __RELPATH {get;set;}
__SERVER            Property     System.String __SERVER {get;set;}
__SUPERCLASS        Property     System.String __SUPERCLASS {get;set;}
ConvertFromDateTime ScriptMethod System.Object ConvertFromDateTime();
ConvertToDateTime   ScriptMethod System.Object ConvertToDateTime();
Delete              ScriptMethod System.Object Delete();
GetType             ScriptMethod System.Object GetType();
Put                 ScriptMethod System.Object Put();
gwmi -namespace "root\MicrosoftIISv2" -class "IISApplicationPools"
__GENUS          : 2
__CLASS          : IIsApplicationPools
__SUPERCLASS     : CIM_LogicalElement
__DYNASTY        : CIM_ManagedSystemElement
__RELPATH        : IIsApplicationPools.Name="W3SVC/AppPools"
__PROPERTY_COUNT : 5
__DERIVATION     : {CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER         : IRON
__NAMESPACE      : root\MicrosoftIISv2
__PATH           : \\IRON\root\MicrosoftIISv2:IIsApplicationPools.Name="W3SVC/A
ppPools"
Caption          :
Description      :
InstallDate      :
Name             : W3SVC/AppPools
Status           :
  • Juste une petite note style.. plutôt que d'utiliser $args pour obtenir l'application le nom du pool, vous pouvez déclarer un nom de paramater. Scripts PowerShell prendra les paramètres nommés et les remplir d'abord par son nom, et ensuite par la poste. Vous pouvez également spécifier un type du paramètre. Exemple: (param [string]$AppPoolName)
  • Curieux de savoir si vous avez obtenu ce que cela va avec la mise à jour du nom de la classe WMI suggestion faite dans ma réponse?
InformationsquelleAutor Frew Schmidt | 2008-10-13