我是 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
然後變成了 insta-bash,但 Windows 在這方面似乎落後了。
如果有比 CMD > Echo "stuff" > exit CMD 更好的方法,請告訴我。我知道我想在每個 Echo“東西”中輸入什麼東西(或者更確切地說,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 登入腳本
*根據下面的ad後續更新*
您似乎想要的是登出和登入腳本。這是編寫這些內容並將其新增至登入/登出群組或本機電腦原則設定的問題。您可以為關機設定相同的內容。請記住,重新啟動將導致登入操作。它也有政策設定。 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 的腳本)