2013-01-18 41 views
0

請有人看看這個,告訴我我做錯了什麼? 我試圖修改自定義錯誤消息屬性在IIS網站使用PowerShell和WMI ...這就是我想出的。WMI IIS 6.0自定義HttpError(Powershell)

$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方法布爾等於(System.Object的OBJ)
GetHashCode的方法INT的GetHashCode()
GetType方法的類型的GetType()
ToString方法字符串的ToString()
HandlerLocation NoteProperty System.String HandlerLocation = C:\ Windows \幫助\ iisHelp \常見\ 400.htm HandlerType NoteProperty System.String HandlerType = FILE
HttpErrorCode NoteProperty System.String HttpErrorCode = 400
HttpErrorSubcode NoteProperty System.String HttpErrorSubcode = *

如何修改HandlerLocation財產,如果它不是我可以調用的方法?

回答

0

嘗試:

$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() 
+0

Graimer,謝謝你這個作品,我看到我要去哪裏錯了,謝謝你的幫助。 –

+0

NP :)爲未來的問題。當你提供'get-member'時,不要在對象上使用'select .....'。當你使用'select'的時候,你創建一個只包含你指定的屬性的新對象,而不是ex中可用的所有對象。這個wmi對象。 :-) –