gast-444
Goto Top

Updates auf Oracle Server mittels PowerShell

Updates auf Oracle Server (welche vorher schon deploy wurden) durchführen.
Einlesen mdt File mit der definiert wird welche Server upzudaten sind.
Meine PowerShell arbeitet sequentiell. Da das aber sehr lange geht bis zu 20 Oracle Server
upgedatet wurden, habe ich gedacht ich könnte die updates parallel starten.
Ich bin aber nicht so der PowerShell Freak. Kann mir da jemand helfen.
Gruss
G.Winklbauer


function upgrade
{
set-location D:\Abc\scripts
get-childitem $LogDir\upgrade.log -ErrorAction SilentlyContinue | remove-item
$stamp=get-date -UFormat %Y%m%d_%T
if ( ! ( test-path D:\Abc\Scripts\cfg\remoteupdate.lst ))
{
log info "Das File remoteupdate.lst im Verzeichnis D:\Abc\Scripts\cfg existiert nicht!"
}
else
{
$rel=get-content cfg\remoteupdate.lst | select-string -pattern 'Rel' |foreach { $_.ToString().split('=')[1] } | select-object -first 1
$sma=get-content cfg\remoteupdate.lst | select-string -pattern 'Sma' |foreach { $_.ToString().split('=')[1] } | select-object -first 1
$tbl=get-content cfg\remoteupdate.lst | select-string -pattern 'Tbl' |foreach { $_.ToString().split('=')[1] } | select-object -first 1
}
log info 'Starte den ilarUpgrade fuer die definierten Kunden, bitte warten...'
if ( ! ( test-path cfg\Mdt.txt ))
{
log info "Kundenfile Mdt.txt im Verzeichnis D:\Abc\Scripts\cfg wurde nicht gefunden!!"
}
else
{
get-content cfg\Mdt.txt | foreach {
try
{
$var1=$_
$var2='Kunde _'
$var3=$var2 + $var1
$var3 | out-file -encoding ASCII -Append $LogDir\upgrade.log
"==============" | out-file -encoding ASCII -Append $LogDir\upgrade.log
log info "Starte den ilarUpgrade für den Kunden $var3, bitte warten..."
$pass = get-content D:\Abc\scripts\pw\pw.txt |convertto-securestring
$credit = new-object -typename System.Management.Automation.PSCredential -argumentlist "svc_fnsw",$pass
$s = New-PSSession -computerName $var1 -credential $credit
$ou1=Invoke-Command -Session $s -Scriptblock {
param ($first,$second,$third)
write-output $first | out-file -encoding ASCII 'D:\Abc\Scripts\temp.txt'
$rel=(get-content D:\Abc\scripts\temp.txt)
write-output $second | out-file -encoding ASCII 'D:\Abc\Scripts\temp.txt'
$tbl=(get-content D:\Abc\scripts\temp.txt)
write-output $third | out-file -encoding ASCII 'D:\Abc\Scripts\temp.txt'
$sma=(get-content D:\Abc\scripts\temp.txt)
set-location D:\Abc\scripts\ilar_updates\$rel
get-childitem D:\Abc\scripts\temp.txt | remove-item
$stamp=get-date -UFormat %Y%m%d_%T
"$stamp Stoppe Filenet IS, bitte warten..." | out-file -encoding ASCII -Append sql1.txt
initfnsw -y stop 2>&1 | out-null
$state=initfnsw status 2>&1 | select-string -Quiet 'stopped'
if ($state -Match 'True')
{
$stamp=get-date -UFormat %Y%m%d_%T
"$stamp FileNet IS ist gestoppt" | out-file -encoding ASCII -Append sql1.txt
$dbr='ilar_' + $sma + '_DB_RELEASE ORDER BY DATUM;'
$sel='select * from ' + $dbr
$sql='@' + $tbl + '.sql ' + $sma
if ($sma -Match 'E1')
{
$var='@del_tabs_EDU.sql'
}
else
{
$var='@del_tabs_PROD.sql'
}
" " | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
$stamp=get-date -UFormat %Y%m%d_%T
"$stamp Fuehre ilarUpgrade im Schema $sma durch..." | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
  1. Update der Tabelle ausführen
$out1 = @"
set lines 255;
set pages 999;
set hea off;
$sql
quit
"@ | sqlplus -S -L ilar/ilar
$out1 | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
$stamp=get-date -UFormat %Y%m%d_%T
"$stamp Kontrolle der Tabelle $dbr" | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
  1. Kontrolle der DB Releases ausführen
$out1 = @"
set lines 255;
set pages 999;
set hea off;
$sel
quit
"@ | sqlplus -S -L ilar/ilar
$out1 | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
"Oracle Fehler aus dem Logfile vom ilarUpgrade" | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
"---------------------------------------------" | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
" " | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
$ask=$tbl + '_' + $Sma + '.log'
get-content $ask | select-string -pattern 'ORA-' | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
"ERROR aus dem Logfile vom ilarUpgrade" | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
"-------------------------------------" | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
" " | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
get-content $ask | select-string -pattern 'ERROR' | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
$stamp=get-date -UFormat %Y%m%d_%T
"$stamp FileNet IS wird gestartet, bitte warten..." | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
set-location D:\Abc\scripts
initfnsw start
$state = initfnsw status 2>&1 | select-string -Quiet 'started'
if ($state -Match 'True')
{
$stamp=get-date -UFormat %Y%m%d_%T
"$stamp FileNet IS wurde gestartet!" | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
" " | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
}
else
{
$stamp=get-date -UFormat %Y%m%d_%T
"$stamp FileNet IS konnte nicht gestartet werden, bitte pruefen!!" | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
" " | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
}
}
else
{
$stamp=get-date -UFormat %Y%m%d_%T
"$stamp FileNet IS konnte nicht gestoppt werden, der Upgrade wurde nicht durchgefuert!!" | out-file -encoding ASCII -Append sql1.txt
" " | out-file -encoding ASCII -Append D:\Abc\Scripts\ilar_updates\$rel\sql1.txt
}
get-content D:\Abc\scripts\ilar_updates\$rel\sql1.txt
get-childitem D:\Abc\scripts\ilar_updates\$rel\sql1.txt | remove-item
} -ArgumentList $rel,$tbl,$sma
$ou1 | out-file -encoding ASCII -Append $LogDir\upgrade.log
Remove-PSSession $s
log info "Der ilarUpgrade für den Kunden $var3 wurde beendet!"
}
catch
{
log warn "Der ilarUpgrade für den Kunden $var3 konnte nicht durchgeführt werden!!!"
log WARN "Msg:`t $($_.Exception.Message)"
log WARN "Cat:`t $($_.CategoryInfo) $($_.InvocationInfo.PositionMessage)"
log warn "Zur Fehleranalyse ggf. auf dem Kundensystem $var3 das Logfile D:\Abc\scripts\ilar_updates\$rel\sql1.txt kontrollieren!" }
}
}
$stamp=get-date -UFormat %Y%m%d_%T
log info "Der ilarUpgrade für die definierten Kunden wurde beendet!"
log info "Bitte die Datei upgrade.log für Detailinformationen zum Upgrade kontrollieren!"
}

Content-Key: 497765

Url: https://administrator.de/contentid/497765

Printed on: April 26, 2024 at 01:04 o'clock

Mitglied: 140913
140913 Sep 24, 2019 at 11:44:58 (UTC)
Goto Top
Auch nicht Powershell Freaks sollten in der Lage sein wenn sie das gelesen haben:
https://blogs.technet.microsoft.com/uktechnet/2016/06/20/parallel-proces ...
Member: emeriks
emeriks Sep 24, 2019 at 11:57:33 (UTC)
Goto Top
Und das
Member: Gast-444
Gast-444 Sep 25, 2019 at 05:40:33 (UTC)
Goto Top
und was heisst das jetzt.....
Member: Gast-444
Gast-444 Sep 25, 2019 at 05:41:37 (UTC)
Goto Top
so einfach ist das nicht wenn man mit PowerShell wenig gearbeitet hat.
Member: Gast-444
Gast-444 Sep 25, 2019 at 06:00:11 (UTC)
Goto Top
wie bist Du denn drauf..... Hast Du auch schon mal was davon gehört, dass es zwischen können und wollen auch noch einen kleinen Unterschied gibt.
Mitglied: 140913
140913 Sep 25, 2019 updated at 06:02:40 (UTC)
Goto Top
Viel Spaß hier noch beim abreagieren. Der Freitag wirft mal wieder seine Schatten voraus...
Mitglied: 114380
114380 Sep 25, 2019 at 11:49:31 (UTC)
Goto Top
Hehe, der Nickname lässt auch vermuten, dass er nicht lange hier bleibtface-smile