Powershell 从ASP.NET应用程序调用新PSSession失败(创建空对象)

Powershell 从ASP.NET应用程序调用新PSSession失败(创建空对象),powershell,powershell-remoting,Powershell,Powershell Remoting,我有一个powershell脚本,正试图在远程计算机上运行。我有一个本地PS脚本,它创建到远程机器的会话,然后调用远程脚本,如下所示: param($serverName, $rootPath, $appsToInstall) $session = Enter-PsSession -ComputerName $serverName $command = { param($path,$apps) $path\temp\IISsetup.ps1 $path $apps } $output =

我有一个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

我已验证web应用正在使用的apppool在我登录的同一帐户下运行,因此它应该具有相同的权限。 下面是我如何从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();

我希望有人能看到我错过了什么;谷歌似乎没有太多关于powershell无法创建远程会话的信息。

据我所知,可能存在两个问题:

会话/<代码>用于交互式远程会话,您最好考虑用<代码>新PSSession < /C> >来替换它。
  • 您可能会遇到凭证问题

  • 无论你想做什么,都有一本不错的食谱。有三本比较老的。

    我没有答案,但我建议你看看IIS的配置。我认为您需要将网站配置为非访问\非模拟以避免任何双跳问题。“$session=Enter PsSession-ComputerName$serverName”没有意义-这不应该是$session=new PsSession吗?您链接到的“从ASP.NET使用PowerShell 2.0第1部分”似乎不好。