在 Powershell 中创建自定义函数
Creating Custom Function in Powershell
我是 PowerHell 的新手,我只是想创建一个(内联)函数,它将接受各种参数和 return 一个填充数组。但是,我不断收到以下错误:
错误:
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
代码看起来像:
"Title" 个变量都有有效值。
$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
}
另外:
当我注释掉一些东西并在 Functions ForEach Loop 中打印变量时,我得到了这个...
"SomeCustomerName SomeSiteName System.Object[] - - "
我应该得到这个...
"CustomerName - Location - Suffix A"
"CustomerName - Location - Suffix B"
"CustomerName - Location - Suffix C"
如有任何见解,我们将不胜感激。
在调用之前定义函数。
$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 指出的那样,该函数未正确调用)。
首先在 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
我是 PowerHell 的新手,我只是想创建一个(内联)函数,它将接受各种参数和 return 一个填充数组。但是,我不断收到以下错误:
错误:
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
代码看起来像:
"Title" 个变量都有有效值。
$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
}
另外:
当我注释掉一些东西并在 Functions ForEach Loop 中打印变量时,我得到了这个...
"SomeCustomerName SomeSiteName System.Object[] - - "
我应该得到这个...
"CustomerName - Location - Suffix A"
"CustomerName - Location - Suffix B"
"CustomerName - Location - Suffix C"
如有任何见解,我们将不胜感激。
在调用之前定义函数。
$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 指出的那样,该函数未正确调用)。
首先在 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