Выполните команды для вывода окна, используя powershell - PullRequest
1 голос
/ 26 апреля 2019

Я создаю сценарий powershell для изменения пароля учетной записи базы данных sybase. Я использую isql.exe для смены пароля. Ниже приведены шаги, которые я пытаюсь автоматизировать:

1) isql.exe -SServerName -UUserAccount -PPassword [Запустите эту команду, и она должна войти в систему с учетной записью пользователя]

2) На данный момент он ожидает запуска этой команды "sp_password 'oldPassword', 'newPassword'" [клавиатура Enter]

3) GO [ввод с клавиатуры]

С помощью приведенного ниже скрипта я могу войти, но не могу выполнить шаги 2 и 3. Я вижу, что экран ожидает ввода Шаг 2 и Шаг 3, но как мне записать в него?

Я новичок в powershell, но я попытался использовать Write-Output, Write-Host, Invoke-Expression, Invoke-Command для шага 2, и он не работал

$exe=$args[0] #argument which contains the path to isql.exe
$server=$args[1] #argument which contains server name
$user=$args[2]  #argument which contains user account
$oldPassword=$args[3] #argument which contains current password
$newPassword=$args[4] #argument which contains new password

$severPrefix= '-S'
$userPrefix= '-U'
$passwordPrefix='-P'
$scriptPrefix='-E'

$spPasswordCmd= 'sp_password'+' '+ $oldPassword +','+ $newPassword

$serverArg = $severPrefix + $server
$userArg= $userPrefix + $user
$passwordArg= $passwordPrefix + $oldPassword

#Step 1- isql.exe -SserverName -UuserAcount -PoldPassword
&$exe $serverArg $userArg $passwordArg 

#Step 2 - After login, execute "sp_password 'oldPassword', 'newPassword'"
#&$spPasswordCmd

#Step 3- Go

Read-Host -Prompt "Press Enter to continue"

enter image description here

Ответы [ 3 ]

2 голосов
/ 26 апреля 2019

Что пошло не так: Вводя первую команду, вы вводите «внутри» ISQL-приглашения. Сценарий powershell не будет отправлять специальные команды ISQL (шаги 2 и 3) в этот сеанс. Мне кажется, что у вас есть два варианта:

1. Вам необходимо открыть сеанс ISQL и отправить блок команд этому сеансу. - это ссылка о соединениях в Sysbase, но я не могу проверить, что там.

2. Читая документы ISQL , кажется, что вы можете передать файл с командами в шаги 1:

Чтение в файле операционной системы, содержащем запрос на выполнение isql: isql -U alma -Ppassword < input_file Файл должен содержать терминатор команды. Результаты появятся на вашем терминале. Читать в файл операционной системы, содержащий запрос и направляющий результаты другой файл: isql -U alma -Ppassword < input_file > output_file

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

1 голос
/ 02 мая 2019

Попробовав много комбинаций, наконец-то я смог заставить его работать. Разместите свой сценарий, чтобы он мог быть полезен другим.

$exe=$args[0] #argument which contains the path to isql.exe
$server=$args[1] #argument which contains server name
$user=$args[2]  #argument which contains user account
$currentPassword=$args[3] #argument which contains current password
$newPassword=$args[4] #argument which contains new password
$outputFilePath=$args[5] #argument which containes spPassword file script path

$spPasswordCmd = "sp_password `'$currentPassword`',`'$newPassword`'"

# Create file:

$spPasswordCmd | Set-Content "$outputFilePath"

# Append to file:

"GO" | Add-Content "$outputFilePath"

 isql -S"$server" -U"$user" -P"$currentPassword"  -i"$outputFilePath"

 write-host "****  Password Change Complete  *****"
 Read-Host -Prompt "Press Enter to exit.!"
0 голосов
/ 26 апреля 2019

После входа в Sybase с помощью isql.exe вам потребуется войти в сеанс isql.exe, чтобы изменить пароль, вызвав sp_password.В вашем коде вы просто выполняете команду входа в систему.Я не думаю, что вы входите в сеанс isql.exe

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

https://www.cdata.com/drivers/sybase/powershell/

...