никогда не заканчивающийся скрипт Powershell при запуске из агента SQL Server - PullRequest
0 голосов
/ 26 апреля 2019

Мой сценарий PowerShell не может создать PS-сеанс при выполнении через задание агента SQL Server, С другой стороны, когда я пытался выполнить скрипт из редактора powershell, он работает нормально.

Я пытался перехватить вывод в текстовый файл, который показывает, что скрипт выполняется нормально до -------

echo "Credentials received" >> C:\Users\username\Desktop\ABC.txt

#Set Execution policy for the first run
#Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

#This is better for scheduled jobs
$User = "xyz@abc.com"
$pass = "0100skdhfsdhlfsj7eb0100000044afdcf1458d41449af94347f8d9d962000012464664603660000c000000010000000cb11e38eb73dd5d612111f4461d953e90000000004800000a00000001000000085512ba758402a4c5f4504af6f407ba3180000003bf98f386b5341815358f54166f931802814a6154f86daf8140000009a3c5af0588baa420ed836dc0ac1d1f4d0fb4649"

$PWord = ConvertTo-SecureString -string $pass
$UserCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord

echo "Credentials received"  >> C:\Users\username\Desktop\ABC.txt

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection

echo "Session"  >> C:\Users\username\Desktop\ABC.txt

Import-PSSession $Session -AllowClobber

echo "Session set up"  >> C:\Users\username\Desktop\ABC.txt

Remove-PSSession -Id $Session.Id
exit

Когда я запускаю тот же фрагмент кода из редактора powershell, он выполняется правильно.
Я ожидаю того же поведения, когда это запланировано от агента SQL.

1 Ответ

0 голосов
/ 03 мая 2019

Поскольку шифрование зависит от пользователя, мы должны создать учетную запись прокси на заданиях агента sql для пользователя, с которым зашифрован пароль. А затем запустите работу с определенным прокси. Это работает.

Используемая техника шифрования:

$password = read-host -prompt "Enter Password" 
write-host "$password is: " 
$secure = ConvertTo-SecureString $password -force -asPlainText 
$bytes = ConvertFrom-SecureString $secure 
#Encrypted Password
echo $bytes

Примечание: - введите код здесь. Вышеупомянутый метод зависит от пользователя и системы. Пожалуйста, зашифруйте пароль на том же компьютере, с которого вы будете запускать скрипт, в котором вы будете использовать пароль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...