У меня есть статья, в которой описан простой способ запуска Powershell через WinRM из .NET на http://getthinktank.com/2015/06/22/naos-winrm-windows-remote-management-through-net/.
Код находится в одном файле, если вы хотите просто скопировать его иэто также пакет NuGet, который включает ссылку на System.Management.Automation.
Он автоматически управляет доверенными хостами, может запускать блоки скриптов, а также отправлять файлы (что на самом деле не поддерживается, но я создал обходной путь).).Возвращаемые значения всегда являются необработанными объектами из Powershell.
// this is the entrypoint to interact with the system (interfaced for testing).
var machineManager = new MachineManager(
"10.0.0.1",
"Administrator",
MachineManager.ConvertStringToSecureString("xxx"),
true);
// will perform a user initiated reboot.
machineManager.Reboot();
// can run random script blocks WITH parameters.
var fileObjects = machineManager.RunScript(
"{ param($path) ls $path }",
new[] { @"C:\PathToList" });
// can transfer files to the remote server (over WinRM's protocol!).
var localFilePath = @"D:\Temp\BigFileLocal.nupkg";
var fileBytes = File.ReadAllBytes(localFilePath);
var remoteFilePath = @"D:\Temp\BigFileRemote.nupkg";
machineManager.SendFile(remoteFilePath, fileBytes);
Надеюсь, это поможет, я использовал это некоторое время в своих автоматизированных развертываниях.Пожалуйста, оставляйте комментарии, если вы обнаружите проблемы.