首页 > 解决方案 > 术语“Get-ADFineGrainedPasswordPolicySubject”未被识别为命令行开关。从 powershell 在 C# 中执行时

问题描述

我有奇怪的问题。从字面上看,不知道在这种情况下该怎么做。

虽然我可以创建细粒度策略并使用“Add-ADFineGrainedPasswordPolicySubject”命令行开关应用这些策略而不会出现任何问题。Get-ADFineGrainedPasswordPolicySubject但是,虽然这些命令行开关是从 C# 程序中引用的,但它开始抱怨Add-ADFineGrainedPasswordPolicySubject“The Term Get-ADFineGrainedPasswordPolicySubject”未被识别为命令行开关或函数。

我真的不知道。我已经导入了模块“Active Directory”,但仍然一直抛出异常。

在互联网上的某个地方找不到任何解决方案,有点卡住了。

请参考以下源代码以供参考。

using (var powerShell = PowerShell.Create())
{
      powerShell.Commands.AddCommand("Import-Module").AddArgument("ActiveDirectory");
      powerShell.Invoke();
      powerShell.Commands.Clear();

      powerShell.Commands.AddCommand(new Command("Get-ADDefaultDomainPasswordPolicy", true));
      ICollection<PSObject> defaultDomainPasswordPolicyOutput = powerShell.Invoke();

      if (defaultDomainPasswordPolicyOutput != null)
      {
          defaultDomainPasswordPolicyOutput.ToList().ForEach(policy =>
          {                           
                var newFineGrainedpolicyCmdLet = $"New-ADFineGrainedPasswordPolicy -Name preppedPolicy -Precedence 1";

                powerShell.Commands.AddCommand(new Command(newFineGrainedpolicyCmdLet, true));
                powerShell.Invoke();

                Console.WriteLine("Error Count : {0}", powerShell.Streams.Error.Count);                                                               

                 var fineGrainedPolicySubjCmdLetASked = $"Get-ADFineGrainedPasswordPolicySubject -Identity preppedPolicy";

                 powerShell.Commands.AddCommand(fineGrainedPolicySubjCmdLetASked);
                 powerShell.Invoke();                               

                 var fineGrainedPolicySubjCmdLet = $"Add-ADFineGrainedPasswordPolicySubject -Identity preppedPolicy -Subjects S-AHPOneServer";

                 powerShell.Commands.AddCommand(fineGrainedPolicySubjCmdLet);
                 powerShell.Invoke();                                                            
           });
        }
        else
        {
            Console.WriteLine("Policies dont found.");
            Console.ReadLine();
         }
   }
}
catch(Exception ex)
{
    Console.WriteLine("Inside exception area : ");
    Console.WriteLine("Exceptions {0}", ex);
    Console.ReadLine();

}

该程序可以在带有 .NET 环境的 Windows Server 2012 R2 上运行,并在那里引发上述异常。

知道如何从中走出来吗?

标签: c#powershellactive-directorywindow-server

解决方案


推荐阅读