You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell无法进入PSSession求助:交互式会话执行异常

解决PromptForChoice后无法进入PSSession的问题

问题根源

  1. Enter-PSSession 启动的是交互式远程会话,但脚本会在执行该命令后立即继续运行后续代码,不会停留在交互式会话中,导致你视觉上感觉“没进入会话”。
  2. 原脚本中的 Invoke-Command 未指定 -ComputerName ServerABC,会默认在本地执行,完全不符合远程操作的需求。

解决方案1:先进入交互式会话,退出后自动执行远程关闭操作

如果你需要先手动操作远程服务器,再自动执行关闭COM应用的逻辑,可以修改脚本,让交互式会话退出后再执行远程命令:

# 选择是否进入交互式会话
$Prompt = "点击Yes进入ServerABC的交互式会话"
$Choices = [System.Management.Automation.Host.ChoiceDescription[]] @("&Yes", "&No", "&Cancel")
$Default = 1

$Choice = $host.UI.PromptForChoice($null, $Prompt, $Choices, $Default)

switch($Choice)
{
    0 {
        Write-Host "正在进入远程会话,退出后将自动关闭COM应用"
        Enter-PSSession ServerABC
        # 退出交互式会话后执行远程关闭逻辑
        $sb = {
            $admin = New-Object -ComObject "COMAdmin.COMAdminCatalog"
            $appCollection = $admin.GetCollection("Applications")
            $appCollection.Populate()
            $appCollection | ForEach-Object {
                Write-Host "正在关闭: $($_.Name)"
                $admin.ShutdownApplication($_.Name)
            }
        }
        Invoke-Command -ComputerName ServerABC -ScriptBlock $sb
    }
    1 { Write-Host "选择了No" }
    2 { Write-Host "选择了Cancel" }
}

解决方案2:直接远程执行关闭操作(无需交互式会话)

如果不需要手动操作远程服务器,直接执行关闭逻辑更高效,完全可以跳过交互式会话:

# 选择是否远程关闭COM应用
$Prompt = "点击Yes关闭ServerABC上的COM应用"
$Choices = [System.Management.Automation.Host.ChoiceDescription[]] @("&Yes", "&No", "&Cancel")
$Default = 1

$Choice = $host.UI.PromptForChoice($null, $Prompt, $Choices, $Default)

switch($Choice)
{
    0 {
        $sb = {
            $admin = New-Object -ComObject "COMAdmin.COMAdminCatalog"
            $appCollection = $admin.GetCollection("Applications")
            $appCollection.Populate()
            $appCollection | ForEach-Object {
                Write-Host "正在关闭: $($_.Name)"
                $admin.ShutdownApplication($_.Name)
            }
        }
        Invoke-Command -ComputerName ServerABC -ScriptBlock $sb
    }
    1 { Write-Host "选择了No" }
    2 { Write-Host "选择了Cancel" }
}

注意事项

  • 确保当前执行脚本的用户拥有目标服务器 ServerABC 的远程管理权限。
  • 目标服务器需开启WinRM服务(可通过 Enable-PSRemoting 命令开启)。

内容的提问来源于stack exchange,提问作者movement

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:07:38