Powershell:无法进入PSSession

jvlzgdj9  于 2023-04-30  发布在  Shell
关注(0)|答案(1)|浏览(127)

我正在使用PromptForChoice在另一台服务器上输入PSSession。然后将执行关闭com应用程序的代码。

#enters interactive remote session
$Prompt = "Click yes to enter interactive session"
$Choices = [System.Management.Automation.Host.ChoiceDescription[]] @("&Yes", "&No", "&Cancel")
$Default = 1

# Prompt for the choice
$Choice = $host.UI.PromptForChoice($Title, $Prompt, $Choices, $Default)

# Action based on the choice
switch($Choice)
{
    0 {Enter-PSSession ServerABC}
    1 { Write-Host "No"}
    2 { Write-Host "Cancel"}
}

#shutsdown COM
$sb = {
    $admin = New-Object -ComObject "COMAdmin.COMAdminCatalog"
    $appCollection = $admin.GetCollection("Applications")
    $appCollection.Populate()
    $appCollection | ForEach-Object {
      Write-Host "shutdown" $_.Name; $admin.ShutdownApplication($_.Name) }

    }

Invoke-Command -ScriptBlock $sb

我面临的问题是它实际上不会进入会话。当我单独运行第一部分时,它进入会话。但是当我作为一个整体运行它时,它不会进入会话,即使当我说是的时候。
如何纠正此问题?

q5lcpyga

q5lcpyga1#

不要进入会话。这是不起作用的-这是一个交互式命令,您实际上离开了脚本范围,最好的脚本将在退出会话后继续运行。
使用New-PsSession创建一个PsSession,然后使用-Session参数传递给invoke-command

相关问题