パスワードを要求されずにPowerShellの認証情報を使用する
ドメインに属しているリモートコンピュータを再起動したいのですが、どうすればよいですか?管理者アカウントは持っていますが、powershellからそれを使用する方法がわかりません。
Restart-Computerコマンドレットがあり、クレデンシャルを渡すことができることは知っていますが、例えばドメインが
mydomainで、ユーザー名が
myuserで、パスワードが
mypassword` だとすると、これを使うには正しい構文とは何でしょうか。
私はパスワードを入力する必要がないように再起動をスケジュールする必要があります。
141
9
Get-Credential` の問題は、常にパスワードを要求されることです。しかし、これを回避する方法があります。それは、パスワードをファイルシステム上に安全な文字列として保存することです。
以下の記事で、この仕組みを解説しています。
要約すると、パスワードを(暗号化された文字列として)保存するためのファイルを作成します。次の行は、パスワードの入力を促し、それを暗号化された文字列として
c:\securestring.txt
に格納します。この作業は一度だけです。PowerShell コマンドの引数に
-Credential
がある場合、それはPSCredential
を渡すことができることを意味します。つまり、あなたの場合はあなたの環境が分からないので、別の
-Authentication
スイッチ値が必要かもしれません。別の方法もありますが...
スクリプトファイルにパスワードを残したくない場合は、この操作をしないでください。 (スクリプトにパスワードを保存するのは良いアイデアではありませんが、その方法を知りたいだけの人もいます)。
さて、これが警告であり、以下がコードです。
cred` には、John Doe のパスワード "ABCDEF" を含む認証情報が格納されます。
パスワードを使えるようにする代替手段
認証情報の保存については、私は2つの関数(通常は私のプロファイルから読み込まれるモジュールにある)を使用しています。
そしてこれ。
こんな風に使うんですね。
クレデンシャルファイルが存在しない場合、初回にプロンプトが表示され、その時点でクレデンシャルがXMLファイル内に暗号化された文字列で保存されることになります。2回目にこの行を実行すると、xmlファイルが存在し、自動的に開かれます。
別の資格情報を必要とするリモートサーバーからSCOM 2012関数を実行する必要があります。 ConvertTo-SecureStringへの入力としてパスワード復号化関数の出力を渡すことにより、クリアテキストパスワードを避けます。 明確にするために、これはここには表示されません。
宣言を強く入力したい。 $ strPassのタイプ宣言は正しく機能します。
再起動をスケジュールする場合に、これを行うことができる2つの方法を次に示します。
まず、別のマシンを接続して再起動するために必要な権限を持つ資格情報を使用して、あるマシンにタスクを作成できます。 これにより、スケジューラーは資格情報を安全に保存する責任が生じました。 rebootコマンド(私はPowershellの人ですが、これはよりクリーンです。)は:
SHUTDOWN / r / f / m \ \ ComputerName
。ローカルマシンでスケジュールされたタスクを作成し、別のマシンをリモートで再起動するコマンドラインは次のとおりです。
`SCHTASKS / Create / TN "Reboot Server" / TR "shutdown.exe / r / f / m \ ComputerName" / SC ONCE / ST 00:00 / SD "12/24/2012" / RU "domain \ username " / RP "パスワード"
2つ目の方法は、現在の資格情報を使用して、リモートマシンのシステムアカウントで実行されるスケジュールされたタスクを作成することです。
SCHTASKS / Create / TN "Reboot Server" / TR "shutdown.exe / r / f" / SC ONCE / ST 00:00 / SD "12/24/2012" / RU SYSTEM / S ComputerName
。これはGUIでも機能し、ユーザー名としてSYSTEMを入力するだけで、パスワードフィールドは空白のままになります。
ソリューション。
ビルドマシンの場合< br />。 前のコードでは、ユーザー名とパスワードの値をbuild-machineの秘密(「ログから非表示」)環境変数に置き換えます。
テスト結果による。
わかります。
このようにパスワードを保存する場合は、十分に注意してください。.. 安全ではありません。 ...
Import / Export-CLIXMLを使用する1つの例を見ました。
これらは、解決しようとしている問題の私のお気に入りのコマンドです。 そして、それらを使用する最も簡単な方法は。
したがって、ファイルがローカルに存在しない場合、資格情報を要求して保存します。 これは問題なく
[pscredential]
オブジェクトを取り、資格情報を安全な文字列として非表示にします。最後に、通常のように資格情報を使用します。
Securtyに関するメモ:
資格情報をディスクに安全に保存。
編集:元の質問を読み直してください。 上記は、ハードディスクに「
[predential]
」を初期化している限り機能します。 つまり、それをスクリプトにドロップしてスクリプトを実行すると、そのファイルが作成され、無人でスクリプトを実行するのは簡単です。とてもシンプルなものを試してみませんか?
コマンド 'shutdown / r / f / t 0'とCMDのPCリストでpsexecを使用します。