#powershell
#powershell
Вопрос:
Мне нужно создать приложение, которое будет запускать Power-Shell и запускать команду Get-Dedupjob
, но я получил следующую ошибку:
термин «Get-Dedupjob» не распознается как имя командлета, функции, файла сценария или рабочей программы.
Хотя упомянутая команда работает правильно, когда я запускаю ее в power-shell (показать задания дедупликации).
Я полагаю, что проблема может заключаться в том, что программа не запускает команду от имени администратора. Есть ли какое-либо решение, позволяющее запустить это от имени администратора? Или где может быть проблема?
private void button5_Click(object sender, EventArgs e)
{
// Get-Dedupjob
// create Powershell runspace
Runspace runspace = RunspaceFactory.CreateRunspace();
// open it
runspace.Open();
// create a pipeline and feed it the script text
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript("Get-Dedupjob");
// execute the script
Collection<PSObject> results = pipeline.Invoke();
// close the runspace
runspace.Close();
// convert the script result into a single string
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
textBox1.Text = Convert.ToString(stringBuilder);
}
Ответ №1:
Вы должны импортировать соответствующий файл psd1
Ответ №2:
private void button5_Click(object sender, EventArgs e)
{
// Get-Dedupjob
// create Powershell runspace
Runspace runspace = RunspaceFactory.CreateRunspace();
// open it
runspace.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = rs;
ps.AddCommand("Get-Dedupjob");
// execute the script
Collection<PSObject> results = ps.Invoke();
// convert the script result into a single string
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
textBox1.Text = Convert.ToString(stringBuilder);
// close the runspace
runspace.Close();
}
Вам нужно будет создать объект powershell для выполнения команд powershell. Ниже приведен импорт инструкций using, который вам необходим для работы вышеописанного.
using System.Management.Automation; // Windows PowerShell namespace.
using System.Management.Automation.Runspaces; // Windows PowerShell namespace.
Комментарии:
1. Спасибо за ваш ответ, но я уже использую эти объекты: с помощью System.Management. Автоматизация; с помощью System.Management. Автоматизация. Runspaces; используя System. IO;