我正在使用C#执行New-LocalUser cmdlet。如果用户已经存在,则此cmdlet将在ErrorStream中存储异常:

using (PowerShell powerShellInstance = PowerShell.Create())
{
   powerShellInstance.AddCommand("New-LocalUser");
   powerShellInstance.AddParameter("Name", username);
   powerShellInstance.AddParameter("Password", password);

   PSDataCollection<PSObject> output = new PSDataCollection<PSObject>();
   output.DataAdded += OutputAdded;

   powerShellInstance.Invoke(null, output);

   if (powerShellInstance.Streams.Error.Count > 0)
   {
       throw powerShellInstance.Streams.Error[0].Exception;
   }
}

当我打印出上述异常类型时,它是Microsoft.Powershell.Commands.UserExistsException。但是我似乎找不到包含此定义的DLL。有人知道吗?

最佳答案

首先,在PowerShell session 中运行New-LocalUser -?,以确保已加载包含目标类型的程序集。

然后运行以下命令:

[Microsoft.Powershell.Commands.UserExistsException].Assembly.Location

在我的Windows 10计算机上,这产生了:
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.LocalAccounts\1.0.0.0\Microsoft.Powershell.LocalAccounts.dll

关于c# - 哪个DLL包含Microsoft.Powershell.Command命名空间下的异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50710700/

10-10 17:59