WMI IIS 6.0 自定义 HttpError (Powershell)

Posted

技术标签:

【中文标题】WMI IIS 6.0 自定义 HttpError (Powershell)【英文标题】:WMI IIS 6.0 Custom HttpError (Powershell) 【发布时间】:2013-01-02 03:08:40 【问题描述】:

请有人看看这个并告诉我我做错了什么? 我正在尝试使用 powershell 和 wmi 修改 IIS 网站中的自定义错误消息属性...这就是我想出的。

    $Server = "localhost" 
    $Wmi = Get-WmiObject -Class IIsWebServerSetting -Namespace "root\microsoftiisv2" -ComputerName $server -filter "ServerComment = 'SharePoint - SP80'" -Authentication 6
    $CustomHttpError = $wmi | Foreach-Object  $_.HttpErrors | ? $_.HttpErrorCode -contains "400" | Select HttpErrorCode, HttpErrorSubcode, HandlerType,HandlerLocation;
    $CustomHttpError.HandlerLocation('C:\WINDOWS\help\iisHelp\common\Custom.htm')

我收到错误消息“方法调用失败,因为 [Selected.System.Management.ManagementBaseObject] 不包含名为 'HandlerLocation' 的方法”

当我使用 Get-Member 检查 $CustomHttpError 时,我得到以下信息。

类型名称:Selected.System.Management.ManagementBaseObject

名称 MemberType 定义 ---- ---------- ---------- Equals 方法 bool Equals(System.Object obj) GetHashCode 方法 int GetHashCode() GetType 方法类型 GetType() ToString 方法字符串 ToS​​tring() HandlerLocation NoteProperty System.String HandlerLocation=C:\WINDOWS\help\iisHelp\common\400.htm HandlerType NoteProperty System.String HandlerType=FILE HttpErrorCode NoteProperty System.String HttpErrorCode=400 HttpErrorSubcode NoteProperty System.String HttpErrorSubcode=*

如果 HandlerLocation 属性不是我可以调用的方法,我该如何修改它?

【问题讨论】:

【参考方案1】:

试试:

$Server = "localhost" 
$Wmi = Get-WmiObject -Class IIsWebServerSetting -Namespace "root\microsoftiisv2" -ComputerName $server -filter "ServerComment = 'SharePoint - SP80'" -Authentication 6

#Get httperrors array
$HttpErrors = $wmi.HttpErrors
#Changing 400 error pages
$HttpErrors | %  if ($_.HttpErrorCode -eq "400")  $_.HandlerLocation = "C:\WINDOWS\help\iisHelp\common\Custom.htm"  

#Set updated httpserros property
$wmi.HttpErrors = $HttpErrors
#Save object
$wmi.Put()

【讨论】:

Graimer,谢谢你这个作品,我知道我哪里出错了,谢谢你的帮助。 np :) 用于未来的问题。当您提供get-member 时,请勿在之前的对象上使用select .....。当您使用select 时,您会创建一个新对象,其中仅包含您指定的属性,而不是 ex 中可用的所有属性。这个 wmi 对象。 :-)

以上是关于WMI IIS 6.0 自定义 HttpError (Powershell)的主要内容,如果未能解决你的问题,请参考以下文章

通过 WMI 访问应用程序的自定义性能计数器

WMI - 在远程域机器中读取 IIS 应用程序时引发“拒绝访问”异常

用WMI监控IIS

使用 JAVA 在 Windows 中为自定义硬件编写 WMI 提供程序

为 AppPool 使用自定义标识时,StaticFile 上出现 HTTP 错误 500.0

IIS 10.0 HTTP 错误 403.0 - 禁止