実行時にPowerShell変数にテキストを一時的に保存する場合、不要になったときに変数の内容をメモリから削除する最も効率的な方法は何ですか?
私は両方を使用Clear-Item variable:
しましRemove-Variable
たが、前者でメモリの内容を無効にするのに対して、後者で何かがメモリから削除されるのはどれくらいの速さですか?
編集:私が尋ねている理由をもう少し明確にすべきでした。
多数のアプリケーションVMのRDPログインを自動化しています(アプリケーションはサービスとして実行されない、外部委託された開発者、長い話)。
そのため、各VMへの起動セッションをグループ化するスクリプトを開発しています(ほぼ完成しています)。
クレデンシャルを保存するスクリプト関数はread-host
、ホスト名の入力を求めてからget-credentials
、ドメイン/ユーザー/パスワードを取得するために使用するという考え方です。
次に、パスは256ビットキー(資格情報を保存してグループ起動を実行するマシン/ユーザーに固有のランタイムキー)を使用してセキュア文字列から変換されます。
VMの名前、ドメイン、ユーザー、および暗号化されたパスはファイルに保存されます。セッションを起動すると、詳細が読み込まれ、パスワードが復号化され、そのVMのクレデンシャルcmdkey.exe
を保存するために詳細が渡され\generic:TERMSRV
、プレーンテキストのパス変数がクリアされ、そのホストに対してmstscが起動され、数秒後にWindowsクレデンシャルストアからクレデンシャルが削除されます。(パスワードをプレーンテキスト以外のものとしてcmdkey.exeに渡した場合、RDPセッションは誤った資格情報を受け取るか、資格情報を受け取りません)。
したがって、質問です。可能な限り短時間メモリに存在するために、平文のパスワードが必要です。
セキュリティ担当者を満足させるために、スクリプト自体はaes256で暗号化され、ac#ラッパーと独自のpsホストがスクリプトを読み取り、復号化して実行するため、これを実行するマシンにはプレーンテキストソースはありません。(ファイル共有の暗号化されたソースなので、効果的にキルスイッチがあり、暗号化されたスクリプトを、このアプリが無効になっているというメッセージを表示する別のスクリプトに置き換えることができます)