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 方法字符串 ToString() 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 - 在远程域机器中读取 IIS 应用程序时引发“拒绝访问”异常
使用 JAVA 在 Windows 中为自定义硬件编写 WMI 提供程序