Я размещаю PowerShell в своем приложении и настроил ограниченный пул runspace, который в основном пуст (насколько мне известно).
public class MyPowerShell : IDisposable
{
private RunspacePool _runspacePool;
private PowerShell _shell;
public MyPowerShell()
{
try
{
var initialSessionState = InitialSessionState.CreateRestricted(SessionCapabilities.RemoteServer);
_runspacePool = RunspaceFactory.CreateRunspacePool(initialSessionState);
_shell = PowerShell.Create();
_shell.RunspacePool = _runspacePool;
_shell.RunspacePool.Open();
_shell.AddCommand("Import-Module").AddParameter("Assembly", Assembly.GetExecutingAssembly());
_shell.Invoke();
_shell.Commands.Clear();
}
catch (Exception ex)
{
throw;
}
}
public void Dispose()
{
_shell.RunspacePool.Close();
_shell.Dispose();
}
public string[] Exec(string commandText)
{
var results = new List<string>();
try
{
_shell.AddScript(commandText);
foreach (var str in _shell.AddCommand("Out-String").Invoke<string>())
{
results.Add(str);
}
}
catch (Exception ex)
{
results.Add(ex.Message);
}
return results.ToArray();
}
}
очевидно, когда я запускаю этот код ...
_shell.AddCommand("Import-Module").AddParameter("Assembly", Assembly.GetExecutingAssembly());
_shell.Invoke();
_shell.Commands.Clear();
происходит сбой, поскольку нет доступного командлета «Import-Module».Итак, мой вопрос: как я могу импортировать модуль без доступного командлета «Import-Module»?
Это сообщение об ошибке, которое я получаю ...
Термин«Модуль импорта» не распознается как имя командлета, функции, файла сценария или работающей программы.Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку.