runspace New-MsolLicenseOptions命令参数

时间:2014-10-14 17:51:55

标签: c# powershell office365 runspace

我正在尝试编写一个控制台应用程序来管理Office 365中的用户许可证选项。我将运行空间与MSOL powershell模块结合使用。基本上,当我在命令参数中传递禁用计划列表时,除了-DisabledPlans之外,我能够管理所有用户许可证要求。

以下是PowerShell命令可以正常工作并按预期禁用所有计划

New-MsolLicenseOptions -AccountSkuId ACME:ENTERPRISEPACK -DisabledPlans OFFICESUBSCRIPTION,SHAREPOINTWAC,EXCHANGE_S_ENTERPRISE,SHAREPOINTENTERPRISE

我按如下方式构建此runpace命令paramater

     Command licenseOptions = new Command("New-MsolLicenseOptions");
                licenseOptions.Parameters.Add((new CommandParameter("AccountSkuId", "ACME:ENTERPRISEPACK")));
                licenseOptions.Parameters.Add((new CommandParameter("DisabledPlans", 
"OFFICESUBSCRIPTION,SHAREPOINTWAC,EXCHANGE_S_ENTERPRISE,SHAREPOINTENTERPRISE,YAMMER_ENTERPRISE")));

当我在运行空间中构建上面的命令参数并执行时,我会收到以下{"无法分配此许可证,因为许可证选项无效。"}

然而,当我使用以下命令参数时,它成功禁用了服务计划

 Command licenseOptions = new Command("New-MsolLicenseOptions");
                licenseOptions.Parameters.Add((new CommandParameter("AccountSkuId", "ACME:ENTERPRISEPACK")));
                licenseOptions.Parameters.Add((new CommandParameter("DisabledPlans", "EXCHANGE_S_ENTERPRISE")));

我一直在调试,我可以看到禁用列表对象中只有一个项目,其值为OFFICESUBSCRIPTION,SHAREPOINTWAC,EXCHANGE_S_ENTERPRISE,SHAREPOINTENTERPRISE,YAMMER_ENTERPRISE

我希望每个条目都有一个项目。我认为它可能是runpace命令参数如何解释分隔符。

提前干杯

1 个答案:

答案 0 :(得分:1)

我将数组作为字符串传入,我应该传递一个List而不是

            List<string> disabledplans = new List<string>();

            disabledplans.Add("OFFICESUBSCRIPTION");
            disabledplans.Add("SHAREPOINTWAC");
            disabledplans.Add("EXCHANGE_S_ENTERPRISE");
            disabledplans.Add("SHAREPOINTENTERPRISE");
            disabledplans.Add("YAMMER_ENTERPRISE");

            Command licenseOptions = new Command("New-MsolLicenseOptions");
            licenseOptions.Parameters.Add((new CommandParameter("AccountSkuId", "ACME:ENTERPRISEPACK")));
            licenseOptions.Parameters.Add((new CommandParameter("DisabledPlans", disabledplans)));