我编写了一个 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”起作用?
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"
"@