2016-05-10 75 views
-1

我寫了兩個我自己的DSC資源。當我打電話Get-DscConfiguration運行PowerShell的4使用這些資源的一個(PowerShell的5不受影響的計算機上,我得到這些錯誤:Get-DscConfiguration:無法投射'...'類型的對象以鍵入'...'

GET-DscConfiguration:無法投類型的對象System.Management.Automation .SwitchParameter '鍵入 'System.IConvertible'

GET-DscConfiguration:無法轉換的對象類型 'System.String' 鍵入 ' Microsoft.Management.In frastructure.Native.InstanceHandle」。

發生了什麼事? DSC試圖轉換什麼,以及如何讓這個錯誤消失?

回答

0

當資源的Get-TargetResource函數返回的哈希表中的值類型不匹配或無法隱式轉換爲資源的MOF中定義的類型時,會發生這種情況。

我的第一DSC資源的MOF聲明這個屬性:

[Write] 
boolean CaseSensitive; 

Get-TargetResource函數聲明一個Switch參數:

[Switch] 
# The INI file being modified is case-sensitive. 
$CaseSensitive, 

有人被退回像這樣:

return @{ 
      # snip 
      CaseSensitive = $CaseSensitive; 
     } 

解決方案是自己投擲開關:

return @{ 
      # snip 
      CaseSensitive = [bool]$CaseSensitive; 
     } 

我的第二個資源的MOF聲明一個PSCredential屬性:

[Write, 
EmbeddedInstance("MSFT_Credential")] 
string TaskCredential; 

Get-TargetResource函數聲明這個PsCredential對象:

[Management.Automation.PSCredential] 
# The principal the task should run as. Use `Principal` parameter to run as a built-in security principal. Required if `Interactive` or `NoPassword` switches are used. 
$TaskCredential, 

默認情況下,這個屬性是越來越返回一個空字符串:

$resource = @{ 
       TaskCredential = ''; 
      } 

的解決方案是設置TaskCredential的默認值,以$null

$resource = @{ 
       TaskCredential = $null; 
      } 
相關問題