2015-04-06 95 views
0

我對PowerHell很新,並且只是試圖創建一個(內聯)函數,它將接受各種參數並返回一個填充數組。不過,我不斷收到以下錯誤:在Powershell中創建自定義函數

錯誤:

You cannot call a method on a null-valued expression. 
At EnumerateSites.ps1:157 char:19 
+   $Array.Add <<<< ($groupName) 
    + CategoryInfo   : InvalidOperation: (Add:String) [], RuntimeException 
    + FullyQualifiedErrorId : InvokeMethodOnNull 

代碼如下:
「標題」 變量都具有有效的值。

$ValidSecurityGroupSuffixes = @("Suffix A", "Suffix B", "Suffix C") 

$ExpectedSecurityGroups = CreateSecurityGroupList($SPSiteCollection.RootWeb.Title, $SPWeb.Title, $ValidSecurityGroupSuffixes) 

function CreateSecurityGroupList ([string] $siteCollectionName, [string] $siteName, [string[]] $suffixes) 
{ 
    $Array = $() 

    foreach($suffix in $suffixes) 
    { 
     $groupName = $siteCollectionName + " - " + $siteName + " - " + $suffix 
     $Array.Add($groupName) 
    } 

    $Array 
} 

此外:
當我註釋掉的一些事情,只是印在功能foreach循環,我得到這個內部變量...

"SomeCustomerName SomeSiteName System.Object[] - - " 

我應該得到這...

"CustomerName - Location - Suffix A" 
"CustomerName - Location - Suffix B" 
"CustomerName - Location - Suffix C" 

任何見解都會升值ated。

回答

1

在調用它之前定義該函數。

$ValidSecurityGroupSuffixes = @("Suffix A", "Suffix B", "Suffix C") 

function CreateSecurityGroupList ([string] $siteCollectionName, [string] $siteName, [string[]] $suffixes) 
{ 
    $Array = @() 

    foreach($suffix in $suffixes) 
    { 
     $groupName = $siteCollectionName + " - " + $siteName + " - " + $suffix 
     $Array += $groupName 
    } 

    $Array 
} 
$ExpectedSecurityGroups = CreateSecurityGroupList $SPSiteCollection.RootWeb.Title $SPWeb.Title $ValidSecurityGroupSuffixes 

(編輯是因爲Dane指出,函數調用不正確)。

1

首先調用在PowerShell中多值函數,它是這樣的:

$ExpectedSecurityGroups = CreateSecurityGroupList -siteCollectionName $SPSiteCollection.RootWeb.Title -siteName $SPWeb.Title -suffixes $ValidSecurityGroupSuffixes) 

二PowerShell是時髦的,在你的代碼的頂部和函數調用下面喜歡的功能:

Function testing([string] $someText) 
    { 
    #do stuff and return something 
    } 

$returnValue = testing $imSendingTextToAFunction 
相關問題