我是 PowerShell 新手。我想在关闭计算机之前在关机时执行类似操作。我计划让 Windows MMC/本地组策略编辑器使用 PowerShell 脚本执行此操作。
cmd as admin
echo "SOME COMMAND"
echo "exit"
基本上,触发关机或重启事件后它应该:
以管理员身份打开 CMD(并在 UAC?时自动选择是)。
执行一些命令(会有很多)。
关闭 CMD,然后允许 Windows 10 关机/重启。
现在,我知道如何让 MMC 在关机命令完成之前添加要执行的 PowerShell 脚本。我只需要知道如何执行上述三个步骤的语法。
但要明确的是:
我的主要观点是能够以管理员身份打开 CMD,输入命令然后退出 CMD。PowerShell 通常无法以管理员身份正确执行一些特定命令,但 CMD 可以。这样,PowerShell 本身不需要管理员权限,只需临时运行 CMD。
在需要时,我不介意在 UAC 上单击“是”,因为我认为如果真的到了这个地步,我可能只需要使用 sendkeys{TAB}{TAB}{ENTER}
或类似的东西。我似乎无法在互联网上找到如何启动 PowerShell 脚本以便保存它。不过,我在语法中看到了很多关于 sendkeys 的内容。在 Linux 中的 bash 中,它很简单:#!/bin/bash
然后 presto insta-bash,但 Windows 在这方面似乎很落后。
如果有比 CMD > Echo “stuff” > 退出 CMD 更好的方法,请告诉我。我知道我想在每个 Echo “stuff” 中输入什么内容(或者说,如果我最终使用它,则输入 sendkeys),我只是不知道如何以管理员身份打开 CMD。
谢谢。
答案1
我实在不明白你在追求什么。
然而,PowerShell 的目标并不是 GUI 自动工具。您可以使用 SendKeys 实现其中的一些功能,就像通过 VBScript 一样。
但是,由于您是新手,因此您必须快速掌握 PowerShell,以确保您真正理解它以及何时和为何使用它。访问 YouTube 并搜索“Beginning PowerShell”,然后使用 SendKeys 在网上搜索 PowerShell ---例子---
至于您的用例:
基本上,触发关机或重启事件后它应该:
- 以管理员身份打开 CMD(并在 UAC?时自动选择是)。
启动 PowerShell 是一个 PowerShell 命令提示符。无需打开 cmd.exe 即可使用它。PowerShell 可以替代 cmd.exe 所做的一切。只有在您尝试运行提升权限的命令时,才需要接受 UAC。PowerShell 不会跳过 UAC,因为您必须提供管理员凭据。Windows 需要这样做。
- 执行一些命令(会有很多)。
只需使用您想要的命令编写脚本即可。
- 关闭 CMD,然后允许 Windows 10 关机/重启。
脚本完成后,PowerShell 将默认退出。除非你明确告诉它不要这样做。
您似乎想要的是注销和登录脚本。只需编写这些脚本并将其添加到登录/注销组或本地计算机策略设置中即可。
使用组策略部署 Windows PowerShell 登录脚本
*根据以下主题后续内容进行更新*
您似乎想要的是注销和登录脚本。只需编写这些脚本并将其添加到登录/注销组或本地计算机策略设置中即可。您可以为关机设置相同的内容。请记住,重新启动将导致登录操作。它也有一个策略设置。PowerShell 控制台将运行 cmd.exe 可以运行的任何命令。您必须正确调用它们。如果 UAC 是一个问题,那么请将其全部禁用。但这意味着您这样做会承担所有安全风险。
仅当您尝试运行提升权限的命令时才接受 UAC。PowerShell 不会跳过 UAC,因为您必须提供管理员凭据。Windows 要求这样做。
这就是 Start-Process -Verb RunAs 的用途,它有一个凭据开关,但您仍然必须提供该开关。因此,您仍然会收到提示。您可以将凭据保存到安全文件中以供重复使用,但必须在运行任何脚本之前执行此操作。
您可以自行承担风险尝试以下操作。
https://docs.microsoft.com/en-us/previous-versions/technet-magazine/cc162321(v=msdn.10)
https://github.com/sushihangover/SushiHangover-PowerShell/tree/master/modules/PSUserTools
(具体来说是名为 Start-ProcessAsAdministrator.ps1 的脚本)