我想用各种不同的脚本执行一些会话到Oracle数据库中。我想同时进行空缺职位,但我认为参数传递存在问题。尝试使用start-job时,出现的$ item_actual为null。
$lista_scripts = @("insert","update","select")
For ($i=0; $i -le 2; $i++)
{
$item_actual=$lista_scripts[$i]
Write-Host "Ejecutandose $item_actual"
start-job {date;cat "$item_actual";cat $item_actual | sqlplus xxx/xxx@"(description=(address=(protocol=TCP)(host=xxx)(port=xxx))(connect_data=(SERVICE_NAME=xxx)))"; date;}
}
谢谢
答案 0 :(得分:0)
$username = "scott"
$password = "tiger"
$connect_string ="test-ecdu"
$log_file = "c:\powershell_script\test\log.txt"
$lista_scripts = @("select 1 ,sysdate from dual ;","select 2,sysdate from dual;","select 3,sysdate from dual;")
For ($i=0; $i -le 2; $i++)
{
$item_actual=$lista_scripts[$i]
Write-Host "Ejecutandose $item_actual"
start-job -ArgumentList $username, $password,$connect_string,$item_actual, $log_file -ScriptBlock {param($username_, $password_,$connect_string_ , $item_actual_, $log_file_)
date >>$log_file_;
Write-output "RUN $item_actual_" >>$log_file_ ;
$sqlOutput= $item_actual_ | sqlplus -s $username_/$password_@$connect_string_;
Write-output $sqlOutput >>$log_file_
date >>$log_file_;
}
}
c:\powershell_script\test\log.txt
6 июля 2018 г. 13:20:45
RUN select 1 ,sysdate from dual ;
1 SYSDATE
---------- --------
1 06.07.18
Elapsed: 00:00:00.00
6 июля 2018 г. 13:20:45
6 июля 2018 г. 13:20:45
RUN select 2,sysdate from dual;
2 SYSDATE
---------- --------
2 06.07.18
Elapsed: 00:00:00.00
6 июля 2018 г. 13:20:45
6 июля 2018 г. 13:20:46
RUN select 3,sysdate from dual;
3 SYSDATE
---------- --------
3 06.07.18
Elapsed: 00:00:00.00
6 июля 2018 г. 13:20:46