我正在编写一个脚本,并希望保持整洁有序,这就是我的样子。话虽如此,每当我编写脚本时,它通常由两部分组成 - 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上的数据 - 它的意图。
在运行之前我是否有某种魔法咒语让它正常工作?
答案 0 :(得分:0)
基于MSDN documentation看起来Get-CrmOrganization
没有收到任何输入。
Get-CrmOrganization cmdlet检索一个或所有 组织中的部署。 如果没有提供参数,则 cmdlet检索部署中的所有组织。如果名称 提供参数,cmdlet使用。检索组织 指定名称。
如果您没有提供输入,那么它正是您所期望的。
与PowerShell不完全不相称我猜测函数参数输入中出错了。也许您需要function定义上的一些输入参数?
function <name> [([type]$parameter1[,[type]$parameter2])] {
<statement list>
}