我還沒有真正完成任何Windows腳本,所以我在如何拉這一關的損失。無論如何,基本上我們想要做的就是創建一個腳本,它將對哪個IIS AppPool進行回收。我對Google進行了一些研究,並沒有取得任何成功。如何使用Powershell回收IIS AppPool?
這是我現在想:
$appPoolName = $args[0]
$appPool = get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPools" Where-Object {$_.Name -eq "W3SVC/APPPOOLS/$appPoolName"}
$appPool.Recycle()
和錯誤,我得到:
Get-WmiObject : A parameter cannot be found that matches parameter name '$_.Name -eq "W3SVC/APPPOOLS/$appPoolName"'.
無論如何,這將是很好,如果我也知道如何調試這樣的事情。我已經使用gwmi -namespace「root \ MicrosoftIISv2」-list修復了原始腳本中的一個錯誤。任何其他類似的提示都會很棒。
謝謝!
更新:這裏有一些更多的信息
$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 :
只是快速樣式注意..而不是使用的$ args獲取應用程序池的名稱,你可以聲明一個有名的參數。 PowerShell腳本將採用命名參數並首先按名稱和位置填充它們。您也可以指定參數的類型。 例如: (param [string] $ AppPoolName) – 2008-10-13 22:48:03
好奇,如果你得到這個與我的答案中提出的更新的WMI類名稱建議? – 2008-10-15 00:13:59