2016-09-15 15 views
0

私はジレンマがあります。Powershellと他のユーザーとしてスケジュールされたタスクを実行

Windowsでスケジュールされたタスクを設定して、別のユーザー(アクセス権を持つが、ログオン権限を持たないサービスアカウント)としてpowershellスクリプトを実行しようとしています。問題は、セキュリティグループがパスワードをコード化しないように指示されていることです(明らかに良いアドバイス)が、SQLの接続文字列にはプレーンテキストが必要なようです。 、しかし

$password = cat E:\temp\password.txt | ConvertTo-SecureString 
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password) 
$UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) 

$connectionString = "Data Source=<mydatabase>;Initial Catalog='<mytable>';User ID=tng ;Password=$Unsecurepassword;" 

(接続文字列で使用される)バックプレーンテキストに変換し

$credential = Get-Credential 
$credential.Password | ConvertFrom-SecureString | Set-Content e:\temp\password.txt 

そして、スクリプトで暗礁にされています。私は、パスワード・ファイルを作成することによってこの問題を回避取得していますパスワードファイルを作成して自分でスクリプトを実行すると素晴らしい結果が出るが、これをスケジュールされたタスクとして実行できないようだ。過去の経験では、パスワードファイルがスケジュールされたタスクを実行しているサービスアカウントによって作成されている必要がある場所を見てきましたが、ローカルのログオン権限がないため、これを作成する方法がわかりません。何かご意見は?

私はthis technet articleを試しましたが、それでも他のアカウントからローカルログオンが必要と思われます。答えを見つけ

+0

に感謝を発見した[李nk](http://www.adminarsenal.com/admin-arsenal-blog/secure-password-with-powershell-encrypting-credentials-part-2/) – jdolluc

答えて

0

- 私はセキュリティで保護された文字列にキーを追加するために必要な:ファイルを作成するとき

- $キーに追加:

[byte[]] $key = (1..16) 
$credential = Get-Credential 
$credential.Password | ConvertFrom-SecureString -key $key | Set-Content e:\temp\password.txt 

そしてそれを読み戻す:

$passwordfile = "E:\temp\password.txt" 
[byte[]] $key = (1..16) 
$securePassword = Get-Content $passwordfile | ConvertTo-SecureString -Key $key 
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($securepassword) 
$UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) 

回答がまあ、私は私が何かを持っているかもしれないと思うthis link

関連する問題