Я пытаюсь создать установочный пакет, который не только устанавливает наше приложение, но и копирует файлы на удаленный сервер приложений и устанавливает там службу.Я думал, что просто переопределю метод установки в настраиваемом действии, чтобы он запускал скрипт powershell для копирования файлов.К сожалению, когда код вызывает сценарий powershell, я получаю это CmdletProviderInvocationException :
Система обнаружила возможную попытку поставить под угрозу безопасность.Убедитесь, что вы можете связаться с сервером, который вас аутентифицировал.
Мне удалось скопировать код, который я использую для вызова скрипта powershell, в тестовый проект, и он работал нормально, как и следовало ожидатьтак как я вошел на сервер через проводник Windows и поэтому мой пользователь должен пройти аутентификацию.Я думаю, что причина, по которой скрипт не будет работать при вызове установщиком, заключается в том, что установщик переключает пользователей, чтобы получить права администратора для установки приложения, а пользователь-администратор не аутентифицирован (хотя я могу ошибаться).
Кто-нибудь знает, как я мог заставить это работать?
Вот код настраиваемого действия:
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
string scriptLoc = "c:\\sampleLocation";
pipeline.Commands.AddScript("&\"" + scriptLoc + "\\script.ps1\"");
Collection<PSObject> results = pipeline.Invoke();
runspace.Close();
и вот сценарий:
$RemotePath = "\\SERVER\C$\Shared\Service"
$Source = "C:\sampleLocation\Service"
Get-ChildItem $Source -Recurse | Copy-Item -Destination $RemotePath