MMC 経由で PowerShell を使用して管理者レベルの CMD コマンドを実行する

MMC 経由で PowerShell を使用して管理者レベルの CMD コマンドを実行する

PowerShell は初めてです。コンピューターの電源を切る前に、シャットダウン時にこのような操作を行いたいです。Windows MMC/ローカル グループ ポリシー エディターで PowerShell スクリプトを使用してこれを実行する予定です。

cmd as admin
echo "SOME COMMAND"
echo "exit"

基本的に、シャットダウンまたは再起動イベントをトリガーした後は、次のようになります。

  1. 管理者として CMD を開きます (UAC で自動的に「はい」を選択します)。

  2. いくつかのコマンドを実行します(コマンドは多数あります)。

  3. CMD を閉じて、Windows 10 をシャットダウン/再起動します。

これで、シャットダウン コマンドが完了する前に実行する PowerShell スクリプトを MMC に追加する方法を理解しました。あとは、上記の 3 つの手順を実行するための構文を知る必要があります。

ただし、明確にしておくと:

私が言いたいのは、管理者として CMD を開き、コマンドを入力してから CMD を終了できることです。PowerShell は通常、いくつかの特定のコマンドを管理者として正しく実行しませんが、CMD は実行します。このように、PowerShell 自体には管理者権限は必要なく、CMD を一時的に実行するだけです。

必要な場合は、UAC で [はい] をクリックしてもかまいません。必要な場合は、sendkeys{TAB}{TAB}{ENTER}か何かを使用すればよいと考えているからです。インターネットで見つけられないのは、PowerShell スクリプトを開始して保存する方法です。ただし、構文では sendkeys をよく見かけます。Linux の bash では簡単です。#!/bin/bashすぐに bash が起動しますが、Windows ではこの点が逆になっているようです。

CMD > Echo "stuff" > exit CMD よりも良い方法があれば、お知らせください。各 Echo "stuff" (または、sendkeys、それを使用する場合) に入力したい内容はわかっていますが、管理者として CMD を開く方法がわかりません。

ありがとう。

答え1

あなたが何を求めているのか本当に分かりません。

ただし、PowerShell の目的は GUI オートメーション ツールではありません。VBScript の場合と同様に、SendKeys を使用してその一部を実行できます。

しかし、初心者であるあなたは、PowerShell をしっかり理解し、いつ、なぜ使用するのかを確実に理解するために、PowerShell に慣れることが重要です。YouTube で「Beginning PowerShell」を検索し、SendKeys を使用した PowerShell を Web 検索してください ------

使用例:

基本的に、シャットダウンまたは再起動イベントをトリガーした後は、次のようになります。

  1. 管理者として CMD を開きます (UAC で自動的に「はい」を選択します)。

PowerShell を起動すると、PowerShell コマンド プロンプトが起動します。これを使用するのに cmd.exe を開く必要はありません。PowerShell は、cmd.exe が行うすべての処理を置き換えることができます。UAC を受け入れる必要があるのは、管理者特権でコマンドを実行しようとしている場合のみです。管理者の資格情報を提供する必要があるため、PowerShell は UAC をスキップしません。Windows ではこれが必須です。

  1. いくつかのコマンドを実行します(コマンドは多数あります)。

必要なコマンドを含むスクリプトを作成するだけです。

  1. CMD を閉じて、Windows 10 をシャットダウン/再起動します。

PowerShell は、スクリプトが完了するとデフォルトで終了します。特に終了しないように指示しない限りは。

あなたが必要としているのは、ログオフ スクリプトとログオン スクリプトのようです。これは、それらを記述して、ログオン/ログオフ グループまたはローカル マシンのポリシー設定に追加することです。

ログオン スクリプトに 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 という名前のスクリプト)

関連情報