Я пытаюсь создать нового локального пользователя в Windows, выполнив сценарий PowerShell из приложения C# Console.
Я уже установил необходимые пакеты Nuget:
microsoft.powershell.sdk (v7.5.2)
powershell. /> Я использую system.management.automation.powershell.create () < /code> в моем коде C# для запуска сценария. Вот упрощенная версия: < /p>
using System.Management.Automation;
using (var ps = PowerShell.Create())
{
ps.AddScript(@"
Import-Module Microsoft.PowerShell.LocalAccounts
$password = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
New-LocalUser -Name 'TestUser' -Password $password -FullName 'Test User' -Description 'Created from C#'
");
var results = ps.Invoke();
if (ps.HadErrors)
{
foreach (var error in ps.Streams.Error)
Console.WriteLine("Error: " + error.ToString());
}
}
< /code>
Проблема: я продолжаю получать эту ошибку, когда сценарий запускается: < /p>
The term 'New-LocalUser' is not recognized as the name of a cmdlet, function, script file, or operable program...
< /code>
Я подтвердил, что: < /p>
Приложение запускается как администратор (через манифест приложения с требованиями) < /p>
< /li>
scripts explicty использует Import-omodule. /> < /li>
Один и тот же код PowerShell работает правильно, когда запускается вручную из повышенного сеанса PowerShell < /p>
< /li>
< /ul>
Несмотря на все это, когда запускается через PowerShell.Create () < /ul>, код, я не узнаю. Интересно: < /p>
microsoft.powershell.sdk не подвергает полного набора модуля при запуске в этом контексте? /> < /li>
Есть ли лучший способ разместить PowerShell с полным доступом к локальной учетной записи?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... packages-b