如何显示由powershell脚本执行的更新查询的输出(查询结果)



我每天都需要更新数据库中一定数量的记录。

现在要更新这个数据库,我使用Merge-->选择-->按顺序更新

但是我需要显示这个更新语句的输出(在日志文件中(

代码:update_status.ps1

$FilePath = $HOME+"binORACLE_CONNECTION_HOMEoracle_config.properties"
$SID=Select-String -Pattern "oracle_SID" -Path $FilePath 
$Data_Source=$SID.ToString().split('=')[1]
$user_name=Select-String -Pattern "oracle_user_name" -Path $FilePath
$User=$user_name.ToString().split('=')[1]
$user_password=Select-String -Pattern "oracle_user_password" -Path $FilePath
$Pwd=$user_password.ToString().split('=')[1]
$connectionString= "Data Source=$Data_Source;User Id=$User;Password=$Pwd;Integrated Security=no"
[System.Reflection.Assembly]::LoadWithPartialName("System.Data.OracleClient") | Out-Null 
$connection = New-Object System.Data.OracleClient.OracleConnection($connectionString)
function Oracle_Connection ( $query)
{
$connectionString= "Data Source=$Data_Source;User Id=$User;Password=$Pwd;Integrated Security=no"
[System.Reflection.Assembly]::LoadWithPartialName("System.Data.OracleClient") | Out-Null 
$connection = New-Object System.Data.OracleClient.OracleConnection($connectionString)
$queryString = $query 
$command = New-Object System.Data.OracleClient.OracleCommand($queryString, $connection) 
$connection.Open()
$dataset = New-Object System.Data.DataTable
$oracleadapter = New-Object System.Data.OracleClient.OracleDataAdapter $command
$resultcount = $oracleadapter.fill($dataset)
$result = $command.ExecuteScalar()
Write-Host $result
$connection.Close()
}
function Update_p2c ($p2c, $c2p)
{
Write-Host "Updating P2C"
$query_sub_p2c ="MERGE INTO TABLE TB USING (SELECT ...) src ON ( NAME = src.NAME) WHEN MATCHED THEN UPDATE SET TB.P2C = src.ID";
Oracle_Connection $query_p2c
if ($resultcount -gt 0) { Write-Host "$resultcount rows were updated"} else {Write-Host "No rows were updated"}
}
##Initial setup completed.
#Defining Source and Target variables used in functions
$p2c = 'P2C'
$c2p = 'C2P'

Update_p2c -p2c $p2c -c2p $c2p
##End

结果:

PS D:
Updating P2C
No rows were updated

然而,当我运行select&在DB中手动更新,我可以看到行分别被选中和更新。

这个脚本是由任务调度程序中的.bat文件触发的,它生成一个日志文件

bat文件:

pushd "%~dp0"

start /B /WAIT powershell -File "D:binupdate_status.ps1" >> D:logupdate_status_%USERNAME%_%date%_log.log 2>&1
exit

我的要求是:我需要将更新的输出(从数据库更新的某行(放入日志文件中。即使没有更新任何行,它也应该显示相同的行。

如果我的问题不清楚,请告诉我。

如有任何帮助,我们将不胜感激:(

原则上,从任务调度程序运行powershell脚本不需要批处理。

Task -> Actions -> Program/script = powershell.exe
Task -> Actions -> Add arguments = -File "D:binupdate_status.ps1"

如果您要查找的数据存储在变量$result中,只需将其连接到日志文件:

$result | set-content "D:logupdate_status_$($env:username)_$(get-date -format 'yyyy-dd-MM')_log.log"

注意$env:username将始终是计划任务的调用方标识。

最新更新