PowerShell は初めてです。コンピューターの電源を切る前に、シャットダウン時にこのような操作を行いたいです。Windows MMC/ローカル グループ ポリシー エディターで PowerShell スクリプトを使用してこれを実行する予定です。
cmd as admin
echo "SOME COMMAND"
echo "exit"
基本的に、シャットダウンまたは再起動イベントをトリガーした後は、次のようになります。
管理者として CMD を開きます (UAC で自動的に「はい」を選択します)。
いくつかのコマンドを実行します(コマンドは多数あります)。
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 検索してください ---例---
使用例:
基本的に、シャットダウンまたは再起動イベントをトリガーした後は、次のようになります。
- 管理者として CMD を開きます (UAC で自動的に「はい」を選択します)。
PowerShell を起動すると、PowerShell コマンド プロンプトが起動します。これを使用するのに cmd.exe を開く必要はありません。PowerShell は、cmd.exe が行うすべての処理を置き換えることができます。UAC を受け入れる必要があるのは、管理者特権でコマンドを実行しようとしている場合のみです。管理者の資格情報を提供する必要があるため、PowerShell は UAC をスキップしません。Windows ではこれが必須です。
- いくつかのコマンドを実行します(コマンドは多数あります)。
必要なコマンドを含むスクリプトを作成するだけです。
- 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 という名前のスクリプト)