У меня есть скрипт powershell, который я пытаюсь запустить на удаленном компьютере. У меня есть локальный сценарий PS, который создает сеанс на удаленной машине, а затем вызывает удаленный сценарий, например:
param($serverName, $rootPath, $appsToInstall)
$session = Enter-PsSession -ComputerName $serverName
$command = {
param($path,$apps)
$path\temp\IISsetup.ps1 $path $apps
}
$output = Invoke-Command -Session $session -scriptblock $command -ArgumentList
$rootPath,$appsToInstall
Remove-PSSession -Session $session
Если я запускаю локальный скрипт из консоли PS, он работает так, как ожидалось, и удаленный скрипт запускается. Однако, когда я пытаюсь выполнить его из моего приложения ASP.NET, переменная $ session равна null - сеанс не создается / не устанавливается - и, следовательно, сценарий не запускается на удаленном компьютере. Powershell не возвращает ошибку или любое другое указание на то, что произошел сбой ... Я просто вижу, что $session -eq $null
.
Я убедился, что пул приложений, который использует веб-приложение, работает под той же учетной записью, с которой я вхожу, поэтому должен иметь те же разрешения.
Вот как я вызываю локальный скрипт из ASP.NET:
using (Runspace remoteRunspace = RunspaceFactory.CreateRunspace())
{
remoteRunspace.Open();
using (PowerShell ps = PowerShell.Create())
{
ps.Runspace = remoteRunspace;
var cmd = new Command(Path.Combine(ServerPath, "LocalIISSetupLauncher.ps1"));
cmd.Parameters.Add("serverName", this.Server.ServerName);
cmd.Parameters.Add("rootPath", LocalIisDirectory);
cmd.Parameters.Add("appsToInstall", Server.InstalledApplications.ToList().ToArray());
ps.Commands.AddCommand(cmd);
var results = ps.Invoke();
Я надеюсь, что кто-нибудь увидит, чего мне не хватает; Похоже, что Googles не слишком сильно влияет на PowerShell, который не может создать удаленный сеанс.