我正在创建一个Powershell脚本来更改sybase数据库帐户密码。我正在使用isql.exe更改密码。以下是我要自动执行的步骤:
1)isql.exe -SServerName -UUserAccount -PPassword [运行此命令,它应该使用用户帐户登录]
2)此时,它正在等待您运行此命令“ sp_password'oldPassword','newPassword'“ [键盘Enter]
3)转到[键盘输入]
使用下面构建的脚本,我可以登录,但无法执行步骤2和3。我看到屏幕正在等待输入步骤2和步骤3,但是我应该如何写呢?
我是PowerShell的新手,但是我尝试在步骤2中使用Write-Output,Write-Host,Invoke-Expression,Invoke-Command,但它不起作用
$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"
答案 0 :(得分:2)
出了什么问题: 通过输入第一个命令,您输入了“ inside” ISQL提示符。 Powershell脚本不会将ISQL特定命令(步骤2和3)发送到该会话。 在我看来,您有两种选择:
1。 您需要打开一个ISQL会话,并向该会话发送命令块。 This是有关Sysbase上连接的链接,但我无法测试其中的内容。
2。 通过阅读ISQL docs,看来您可以将带有命令的文件传递到步骤1:
读取包含查询的操作系统文件,以供执行
isql: isql -U alma -Ppassword < input_file
文件必须包含一个 命令终止符。结果显示在您的终端上。读入 包含查询的操作系统文件,并将结果定向到 另一个文件:isql -U alma -Ppassword < input_file > output_file
我会先在这里度过时间。看到那里可以找到有关如何编写sysbase命令文件的说明的链接。
答案 1 :(得分:1)
尝试了很多组合之后,终于可以使它起作用了。发布我的脚本,以便对其他人有帮助。
$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.!"
答案 2 :(得分:0)
使用isql.exe登录到Sybase之后,您需要进入isql.exe会话以通过调用sp_password更改密码。在您的代码中,您只是在执行login命令。我不认为您正在参加isql.exe会话
看看下面的链接,我想它可能是有用的并且可能是更改数据库帐户密码的更好方法。