PsExec 在 PowerShell 脚本结束时必须不关闭

问题描述 投票:0回答:1

我编写了一个 PowerShell 脚本来获取本地计算机组中的用户列表。 执行时,会打开一个 CMD,并输入变量值。 输入变量后,PsExec 在第二个 CMD 窗口中打开,执行命令后,两个窗口都关闭。

$computer=Read-Host "Computer"
$login=Read-Host "Login"
$password=Read-Host "Password" -AsSecureString
$group=Read-Host "Group"

Start-Process psexec -Verb runAs -ArgumentList "-i \\$computer -u $computer\$login -p $password -s net localgroup ""$group"""

我需要 CMD 和 PsExec 才能关闭。这样我就可以看到用户列表。 在代码末尾添加“暂停”不允许您仅关闭第一个 CMD 窗口。

“-NoNewWindow”参数应该阻止第二个窗口打开。与“pouse”一起,这将是一个解决方案。 但是“-NoNewWindow”不起作用(

还有哪些其他选择? 或者如何使“-NoNewWindow”起作用?

powershell psexec
1个回答
0
投票
  • 要使

    Start-Process
    调用同步,请添加
    -Wait

  • -Verb Runas
    ,即请求提升(以管理员权限运行)总是在新窗口中运行提升的进程 - 这就是为什么它不能与
    -NoNewWindow
    结合使用。

  • psexec.exe
    调用中删除 -i;在定位远程计算机时使用
    -i
    会导致进程在 remote 计算机上的窗口中运行。

  • 为了在执行

    net localgroup
    后暂停,请通过 cmd.exe
     调用它 
    ,这允许您附加
    pause
    调用。

因此,请尝试以下操作(使用 here-string 来简化引用):

Start-Process -Wait -Verb runAs psexec -ArgumentList @"
\\$computer -u $computer\$login -p $password -s cmd /c "net localgroup "$group" & pause"
"@
© www.soinside.com 2019 - 2024. All rights reserved.