2015-02-11 96 views
0

我正嘗試創建一個自定義對象並收到此錯誤。有沒有人有關於如何處理這個問題的想法?由於在PowerShell中創建自定義對象時出錯

$tempObject = New-Object System.Object 
Add-Member -inputobject $tempObject -type NoteProperty -name Name -value "" 
Add-Member -inputobject $tempObject -type NoteProperty -name account status -value "" 
Add-Member -inputobject $tempObject -type NoteProperty -name OU -value "" 
Add-Member -inputobject $tempObject -type NoteProperty -name Last Logon -value "" 

Add-Member : The SecondValue parameter is not necessary for a member of type "NoteProperty", and should not be specified. Do not specify the SecondValue parameter when you add members of 
this type. 
+0

有一個在'最後一Logon'空間;試試''Last Logon'' – JohnLBevan 2015-02-11 01:39:15

+0

(帳戶狀態) – JohnLBevan 2015-02-11 01:41:21

回答

3

如果你有空間在你的字符串,把它們放在引號(單人或雙人):

$tempObject = New-Object System.Object 
Add-Member -inputobject $tempObject -type NoteProperty -name Name -value "" 
Add-Member -inputobject $tempObject -type NoteProperty -name 'account status' -value "" 
Add-Member -inputobject $tempObject -type NoteProperty -name OU -value "" 
Add-Member -inputobject $tempObject -type NoteProperty -name 'Last Logon' -value "" 

更新

每低於@ wannabeprogrammer的評論中,達成上述的速記方式是:

$tempObject2 = [PSCustomObject]@{ 
    Name = "" ; 
    'Account Status' = "" ; 
    OU = "" ; 
    'Last Logon' = "" 
} 

...或得到完全相同的(即所以這兩種方法的compare-object顯示正在創建的對象之間沒有區別)。

$tempObject3 = New-Object -TypeName PSObject -Property @{ 
    Name = "" ; 
    'Account Status' = "" ; 
    OU = "" ; 
    'Last Logon' = "" 
} 

明白我的意思通過運行上面的片斷,然後下面的:

compare-object $tempObject $tempObject2 
compare-object $tempObject $tempObject3 
compare-object $tempObject2 $tempObject3 
+1

非常感謝! – 2015-02-11 01:51:18

+2

只是一個說法,您可以通過將散列投射到PSCustomObject來更快地創建自定義對象,例如'[PSCustomObject] @ {Name =「」; 'Account Status'=「」; OU =「」; 'Last Logon'=「」}' – tkokasih 2015-02-11 03:28:54

+0

@wannabeprogrammer;謝謝,更新。 – JohnLBevan 2015-02-12 11:45:27