Iis 7 如何通过WMI/Powershell在IIS7中设置应用程序池重启计划?
我正在创建一个功能来管理IIS7中的应用程序池,使其符合我们所需的规范,但我在转换等效IIS6脚本中的一行代码时遇到困难;设置重新启动计划 在IIS6中,该行为:Iis 7 如何通过WMI/Powershell在IIS7中设置应用程序池重启计划?,iis-7,wmi,Iis 7,Wmi,我正在创建一个功能来管理IIS7中的应用程序池,使其符合我们所需的规范,但我在转换等效IIS6脚本中的一行代码时遇到困难;设置重新启动计划 在IIS6中,该行为: $newPool.PeriodicRestartSchedule = @( '6:15' ); IIS7的简单翻译为: $newPool.Recycling.PeriodicRestart.Schedule = @('00000000061500.000000:000') 但是,这不起作用,因为它会引发异常: Exception
$newPool.PeriodicRestartSchedule = @( '6:15' );
IIS7的简单翻译为:
$newPool.Recycling.PeriodicRestart.Schedule = @('00000000061500.000000:000')
但是,这不起作用,因为它会引发异常:
Exception setting "Schedule": "Unable to cast object of type 'System.String'
to type 'System.Management.ManagementBaseObject'.
如何创建此schedulelement[]
数组以分配给此值
编辑:问题1向下…:
问题2:调用
$newPool.Put()
时,此值似乎没有保存。下一步是什么?我已经放弃,决定使用appcmd:
function CreateAppPool( [parameter(ValueFromPipelineByPropertyName=$true)][string]$AppPoolName ) {
PROCESS {
$appcmd = 'C:\Windows\SysWOW64\inetsrv\appcmd.exe'
&$appcmd add appPool "/name:$AppPoolName" "/+recycling.periodicRestart.schedule.[value='06:15:00']"
}
}
我仍然很想看看没有appcmd怎么做。似乎是很久以前的一篇文章。。。但我在2016年也遇到了问题,所以在这里发帖似乎不是一件坏事 我通过Pascal脚本完成这项工作,并且使用不同的对象/属性。我遇到的一个主要问题是我的时间字符串不是ansi 下面是它对我的作用的一个片段(varAppPool是我的应用程序池对象):
function CreateAppPool( [parameter(ValueFromPipelineByPropertyName=$true)][string]$AppPoolName ) {
PROCESS {
$appcmd = 'C:\Windows\SysWOW64\inetsrv\appcmd.exe'
&$appcmd add appPool "/name:$AppPoolName" "/+recycling.periodicRestart.schedule.[value='06:15:00']"
}
}
WMI_IIS_ApplicationPool_SetSetting_Recycling(varAppPool, '00000000000000.000000:000', '00000000000000.000000:000');
function WMI_IIS_ApplicationPool_SetSetting_Recycling(varAppPool : Variant; strIdleTimeout, strPeriodicRestart: String):Boolean;
begin
Result := False;
if (WMI_IIS_Internal_CheckVariantIsNull(varAppPool, 'WMI_IIS_ApplicationPool_SetSetting_Recycling: {#WMI_IIS_errApplicationPoolIsNull}')) then
begin
varAppPool.ProcessModel.IdleTimeout := WMI_IIS_Internal_ConvertToAnsi(strIdleTimeout);
varAppPool.Recycling.PeriodicRestart.Time := WMI_IIS_Internal_ConvertToAnsi(strPeriodicRestart);
try
varAppPool.put_();
Result := True;
except
Log('WMI_IIS_ApplicationPool_SetSetting_Recycling: Saving properties failed');
end;
end;
end;