在脚本和snapins的上下文中执行函数

时间:2015-09-23 13:05:50

标签: function powershell module crm

我正在编写一个脚本,并希望保持整洁有序,这就是我的样子。话虽如此,每当我编写脚本时,它通常由两部分组成 - script.ps1和config.xml。脚本是工作完成的地方,config.xml是保存变量的地方。有时我需要创建一个模块,其中包含脚本正在进行的一些工作的功能。

我现在遇到的问题是,如果它们包含另一个snappin或模块,我在执行自定义功能时遇到了一些问题。这是我正在做的事情的一个例子......

Script.ps1 Snip:

 Add-PSSnapIn Microsoft.Crm.Powershell
 $organization = "CRM-ORG"
 Get-CrmOrganization -Name $organization
 $Disable = CUST.Disable-CrmOrganization -OrganizationName $organization
 Write-Host $Disable

Module.psm1 Snip:

function CUST.Disable-CrmOrganization
{
    param([string]$OrganizationName)
    $isSuccess = $true

    Disable-CrmOrganization -Name $OrganizationName
    $orgData = Get-CrmOrganization -Name $OrganizationName

    if($orgData -ne "Disabled")
    {
        $isSuccess = $false
    }    

    $isSuccess
}

所以我在这里尝试做的是创建一个函数,根据操作的方式输出一个真/假值。很简单吧?错误。如果我按原样执行此代码,则函数中的Get操作将返回CRM部署中每个组织的数据。如果我将此函数移动到脚本并执行代码,它只返回$ OrganizationName上的数据 - 它的意图。

在运行之前我是否有某种魔法咒语让它正常工作?

1 个答案:

答案 0 :(得分:0)

基于MSDN documentation看起来Get-CrmOrganization没有收到任何输入。

  

Get-CrmOrganization cmdlet检索一个或所有   组织中的部署。 如果没有提供参数,则   cmdlet检索部署中的所有组织。如果名称   提供参数,cmdlet使用。检索组织   指定名称。

如果您没有提供输入,那么它正是您所期望的。

与PowerShell不完全不相称我猜测函数参数输入中出错了。也许您需要function定义上的一些输入参数?

function <name> [([type]$parameter1[,[type]$parameter2])] { 
     <statement list> 
}