运行 CMD 中的 PowerShell 脚本(带有弹出窗口 window)

Running PowerShell Script in CMD (with popup window)

您好,我通常只需右键单击并编辑我的脚本,然后 运行 使用绿色箭头通过 PowerShell ISE 编辑它们。

但我需要在批处理文件中启动/等待脚本。我希望我的脚本 运行 然后让批处理文件的其余部分等待 PowerShell 脚本关闭。 (因此开始/等待)

它工作正常,但我的问题是: 它打开很好,但无论我是通过选项选择字母还是在选择脚本中设置的数字,它都会根据选择重新启动或关闭。

**我有漂亮的图片可以搭配这个,但我没有足够的代表所以这里有一些代码:(

powershell.exe Set-ExecutionPolicy -ExecutionPolicy Bypass


#Main Choice Script

$IP = New-Object System.Management.Automation.Host.ChoiceDescription '&Edit IP', 'Change IP 
Address'
$Intro= New-Object System.Management.Automation.Host.ChoiceDescription '&Change Introscreen', 
'Change Introscreen'
$Gecko = New-Object System.Management.Automation.Host.ChoiceDescription '&Replace Gecko', 
'Change Gecko Folder'
$PCName = New-Object System.Management.Automation.Host.ChoiceDescription '&Host Name', 'Fix 
Host Name'
$Firewall = New-Object System.Management.Automation.Host.ChoiceDescription '&Firewall 
Settings', 'Fix Firewall Setting'
$Close = New-Object System.Management.Automation.Host.ChoiceDescription '&Close', 'Exit'



$options = [System.Management.Automation.Host.ChoiceDescription[]] 
($IP,$Intro,$Gecko,$PCName,$Firewall,$Close)

$title = 'IT Tool'
$message = 'What do you want to do?'
$result = $host.ui.PromptForChoice($title, $message, $options,-1)

switch ('$result')
{
    0 { "IP" }
    1 { "Intro" }
    2 { "Gecko" }
    3 { "PCName" }
    4 { "Firewall" }
    5 { "Close" }
    }

我似乎无法获得正确运行的选项,我在想:

  1. CMD 太基础了,无法打开选择提示 window。
  2. 我的代码未在 ISE
  3. 之外设置为 运行

** 我觉得 cmd window 只是文本而不是弹出窗口,我只是希望它能正常工作。

如有任何帮助或提示,我们将不胜感激。

您当然可以直接在批处理文件中使用纯文本菜单,方法是使用内置的 choice.exe 实用程序。

@Echo Off

:Menu
ClS
Echo 1. Edit IP
Echo 2. Change Introscreen
Echo 3. Replace Gecko
Echo 4. Host Name
Echo 5. Firewall
Echo 6. Close
%SystemRoot%\System32\choice.exe /C 123456 /M "What do you want to do"
GoTo Item%ERRORLEVEL%

:Item1
Echo Changing IP Address
%SystemRoot%\System32\timeout.exe /T 2 1>NUL
GoTo :Menu

:Item2
Echo Changing Introscreen 
%SystemRoot%\System32\timeout.exe /T 2 1>NUL
GoTo :Menu

:Item3
Echo Changing Gecko Folder
%SystemRoot%\System32\timeout.exe /T 2 1>NUL
GoTo :Menu

:Item4
Echo Fixing Host Name
%SystemRoot%\System32\timeout.exe /T 2 1>NUL
GoTo :Menu

:Item5
Echo Fixing Firewall Setting
%SystemRoot%\System32\timeout.exe /T 2 1>NUL
GoTo :Menu

:Item6
Echo Exiting
%SystemRoot%\System32\timeout.exe /T 2 1>NUL
Exit /B

正如您提到的,您愿意使用 batch-file 我决定 post 一个选项。

如果您的选项是每个条目的单个命令(或者如果您愿意链接命令),您可以预设命令并使用 choice 到 select 选项。

注意! 这里我添加了一些虚拟命令来演示它是如何工作的:

@echo off & cls
setlocal enabledelayedexpansion
set "sel="Edit IP","Change Introscreen","Replace Gecko",Hostname,Firewall,Close"
set "opt_1=ping localhost"
set "opt_2=echo something"
set "opt_3=echo Replace command here"
set "opt_4=hostname"
set "opt_5=echo firewall command here"
set "opt_6=exit /b"
:menu
set cnt=
for %%i in (%sel%) do (
    set /a cnt+=1
    echo !cnt!^) %%~i
    set "_opt!cnt!=%%~i"
)
for /l %%c in (1,1,%cnt%) do set ch=!ch!%%c
choice /C %ch% /M "Enter Selection:"
echo You chose !_opt%errorlevel%!
!opt_%errorlevel%!
pause
set ch= & cls & goto :menu