В настоящее время я пытаюсь использовать C# для вызова Get-SMBShare, который может быть использован в Powershell ... однако, бросает эту ошибку:Calling Get-Smbshare в C#
Исключение: Caught: «Термин" Get-SMBShare 'не распознается как имя командлета, функции, файла сценария или исполняемой программы. Проверьте правильность написания имени или укажите путь к нему, убедитесь, что путь верен и повторите попытку ". (System.Management.Automation.CommandNotFoundException) A System.Management.Automation.CommandNotFoundException был пойман: «Термин« Get-SMBShare »не распознается как имя командлета, функции, файла сценария или исполняемой программы. написание имени или включение пути, проверьте правильность пути и повторите попытку ». Время: 25/10/2015 19:17:59 Тема: Pipeline Выполнение резьбы [6028]
Мой первый язык PowerShell, так что я пытаюсь перевести инструмент с графическим интерфейсом из PowerShell в C#, и инструмент использует сотни команд PS - есть ли что-то, что я должен назвать? Я тестирую вещи на консоли здесь.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
private static void GetShareNames()
{
// Call the PowerShell.Create() method to create an
// empty pipeline.
PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-SmbShare");
Console.WriteLine("Name Path");
Console.WriteLine("----------------------------");
// Call the PowerShell.Invoke() method to run the
// commands of the pipeline.
foreach (PSObject result in ps.Invoke())
{
Console.WriteLine(
"{0,-24}{1}",
result.Members["Name"].Value,
result.Members["Path"].Value);
} // End foreach.
Console.ReadLine();
} // End Main.
static void Main(string[] args)
{
GetShareNames();
}
}
}
Привет Кит, я посмотрел на это и это не сработает. Не могли бы вы убедиться, что это работает для вас? –
Я проверил первый пример, и он работает после исправления одного - ошибка с костяной головой (не смешивайте в arg с именем команды) и два - исправление более тонкой проблемы. AFAICT Модуль SmbShare работает только в 64-битном режиме, поэтому, если ваш проект C# настроен «предпочитает 32-разрядный», вам нужно снять этот флажок. –
Спасибо за это - это мой первый проект C#, поэтому я ценю помощь! –