Eu uso o operador de chamada,
&
, como Keith Hill sugeriu com a pergunta, Como executar um arquivo EXE no PowerShell com parâmetros com espaços e aspas. & 'path\sqlplus.exe' 'system/[email protected] as sysdba'
Coloquei o nome de usuário, senha entre aspas devido aos espaços.
Para iniciar um script, adiciono outro parâmetro da seguinte forma:
& 'path\sqlplus.exe' 'system/[email protected] as sysdba' '@my_script.sql'
Se você está recebendo o erro ORA-12154 e sabe que outros usuários estabeleceram conexões (o que implica que o listener do banco de dados está funcionando corretamente); Eu então examinaria se o SQL*Plus pode encontrar meu arquivo tnsname.
Minha primeira tarefa seria ver se consigo tnsping da seguinte forma no Windows cmd.exe:
tnsping orcl
Ele confirmará que uma conexão pode (ou não pode ser estabelecida).
Se não puder, eu verificaria se a variável de ambiente, ORACLE_HOME, está definida. O SQL*Plus usa isso para localizar o arquivo tnsname.ora.
Se não estiver definido, eu executaria esta instrução no PowerShell (para estabelecer esta variável de ambiente):
[Environment]::SetEnvironmentVariable("ORACLE_HOME", "C:\app\Administrator\product\11.2.0\client_1" , "User")
Em seguida, tentaria novamente o tnsping (identificado acima).
Uma vez bem-sucedido, tentaria novamente executar o comando de execução do script acima.