1. ホーム
  2. powershell

[解決済み] powershell で再利用するために資格情報を保存すると、ConvertTo-SecureString : Key not valid for use in specified state というエラーが発生する。

2022-02-02 18:47:12

質問

この投稿で説明されているようなことを行って、認証情報を保護されたファイルに保存し、自動化プロセスでそれを使用して Invoke-command を介してリモート PS スクリプトを実行できるようにしていました。 http://blogs.technet.com/b/robcost/archive/2008/05/01/powershell-tip-storing-and-using-password-credentials.aspx

パスワードは暗号化されたファイルから読み込まれ、Invoke-commandに渡され、すべてがうまくいきます。

今日、スクリプトの準備ができたので、自動化プロセスで使用されるWindowsアカウントで実行しようとしたところ、スクリプトがファイルから保護されたパスワードを読み込もうとしているときに、以下のようなエラーが発生しました。

ConvertTo-SecureString : Key not valid for use in specified state.
At \\remoted\script.ps1:210 char:87
+ $password = get-content $PathToFolderWithCredentials\pass.txt | convertto-sec
urestring <<<<
    + CategoryInfo          : InvalidArgument: (:) [ConvertTo-SecureString], C
   ryptographicException
    + FullyQualifiedErrorId : ImportSecureString_InvalidArgument_Cryptographic
   Error,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand

仕事仲間に彼のアカウントで実行するように頼んだら、同じエラーが出た。

これは、私が認証情報を保存するために使用しているコードです。

$PathToFolderWithCredentials = "\\path\removed"

write-host "Enter login as domain\login:"
read-host | out-file $PathToFolderWithCredentials\login.txt

write-host "Enter password:"
read-host -assecurestring | convertfrom-securestring | out-file $PathToFolderWithCredentials\pass.txt

write-host "*** Credentials have been saved to $pathtofolder ***"

これは、Invoke-commandで使用するためにそれらを読み込む自動化プロセスで実行するスクリプトのコードです。

$login= get-content $PathToFolderWithCredentials\login.txt
$password = get-content $PathToFolderWithCredentials\pass.txt | convertto-securestring
$credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist $login,$password

Error happens on line $password = get-content $PathToFolderWithCredentialspass.txt | convertto-securestring

何か思い当たることはありますか?

解決方法は?

ConvertFrom-SecureString を取る。 Key ( と SecureKey ) パラメータを使用します。鍵を指定して暗号化された標準文字列を保存し、その鍵を再び ConvertTo-SecureString を使用すると、ユーザーアカウントに関係なく、安全な文字列を取得できます。

http://technet.microsoft.com/en-us/library/dd315356.aspx

あるプロジェクトで、非対称暗号化を実装しました。人々は公開鍵を使ってパスワードを暗号化し、自動化プロセスはパスワードを復号するための秘密鍵を持つというものです。 自動デプロイのための本番環境設定でのパスワードの扱い