2015-04-06 98 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 
相关问题