2016-09-15 3 views
0

У меня есть дилемма.Powershell и выполнение запланированного задания как другой пользователь

Я пытаюсь настроить запланированную задачу в Windows, которая запускает сценарий powershell как другой пользователь (учетная запись службы, которая имеет доступ, но не имеет права входа). Проблема в том, что нашей группе безопасности сообщили, что мы не будем кодировать пароли (очевидно, хорошие советы), но строка подключения для SQL, похоже, нуждается в ней в виде простого текста. Я получаю вокруг этого путем создания файла паролей:

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

, а затем в сценарии преобразования его обратно в обычный текст (который будет использоваться в строке подключения)

$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;" 

Загвоздка однако, является что когда я создаю файл паролей и запускаю скрипт как сам, он отлично работает, но я не могу запустить его как запланированную задачу. В прошлом опыте я видел, где, вероятно, файл пароля, вероятно, создается учетной записью службы, выполняющей запланированную задачу, но без локальных прав регистрации, я не уверен, как это создать. Есть предположения?

Я пробовал this technet article, но кажется, что он по-прежнему требует локального входа в систему с другой учетной записи.

+0

Ну, я думаю, я мог бы что-то [Li пк] (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

 Смежные вопросы

  • Нет связанных вопросов^_^