-1
일부 특정 propertie.files의 행을 많이 대체하는 스크립트를 작성하고 있습니다. 이제 거의 끝났지 만 테스트 등을 위해 로그를 작성해야합니다.하지만 아이디어가 없습니다. 나는 기능과 물건 같은 많은 옵션을 찾았지만 이걸 얻지는 못한다. 그래서 네 도움이 필요해.PowerShell이 로그를 작성 중
아마추어에게는 감사드립니다.
#Config.ps1 laden
. \\imbo\imbo$\03_Applikationen\03_27_customizing_sapbo_script\Umsetzung\config.ps1
#-----------------------------Input-------------------------------------------------------
#Abfrage für die Umgebung
$env = Read-Host -Prompt "@PROD, @INT, @DEV, @ADM, @PRD_EXT, @INT_EXT "
#-----------------------------Copy-Jobs---------------------------------------------------
#Property-Files kopieren
Copy-Item -Path $propertyfiles -Destination $1war1, $1war2
#Bilder kopieren
Copy-Item -Path $sap_logo -Destination
Copy-Item -Path $post_logo -Destination
Copy-Item -Path $images_src -Destination $images_dst
#Custom kopieren
Copy-Item -Path $custom_src -Destination $custom_dst1, $custom_dst2
#-----------------------------WAR-Files---------------------------------------------------
#WAR-Files
ForEach($Datei in Get-ChildItem $1war1, $1war2, $2war1, $2war2, $3war1, $3war2, $4war1, $4war2, $5war1, $5war2, $6war1, $6war2, $7war1, $7war2, $8war1, $8war2, $9war1, $9war2, $cluster1, $cluster2) {
# Get-Content liest eine Texdatei oder mehrere Zeile für Zeile ein
# in der Variablen $Zeilen steht deshalb eine Liste von Zeilen (Array)
$Zeilen = Get-Content -Path $Datei.Fullname
# Die Datei befindet sich nun Komplett im Speicher (in der Variablen $Zeilen)
# deshalb können wir die Datei überschreiben
# Zeilen Zähler, wird nur gebraucht um die erste Zeile zu erkennen
$ZeilenZähler = 1
# jede Zeile abarbeiten
foreach($Zeile in $Zeilen)
{
# Hier findet meine Dateiveränderung statt.
# Beispiel: Alle Buchstaben 'a' durch den Buchstaben 'o' ersetzen
#.+ ist dazu da um dem Programm zu sagen dass hier eigentlich noch mehr kommt aber dies nicht bekannt ist
#\d+ steht für Ziffern aber man weiss auch hier nicht welche
if($env -eq '@PROD') {
#global.properties
$Zeile = $Zeile -replace "max.tree.children.threshold=\d+","max.tree.children.threshold=300"
$Zeile = $Zeile -replace "idm.princ=.+/.+","idm.princ=$princp"
$Zeile = $Zeile -replace "idm.keytab=D:/sso/.+.keytab","idm.keytab=D:/sso/$princps.keytab"
#BIlaunchpad.propertiers, CmcApp.properties, OpenDocument.properties
$Zeile = $Zeile -replace "cms.default=.+","cms.default=$env"
#Session-Timeouts
$Zeile = $Zeile -replace "session-timeout>\d+</session-timeout>","session-timeout>120</session-timeout>"
#Kerberos-Filter aktivieren
$Zeile = $Zeile -replace "<!--123",""
$Zeile = $Zeile -replace "321-->",""
}
elseif($env -eq '@INT') {
#global.properties
$Zeile = $Zeile -replace "max.tree.children.threshold=\d+","max.tree.children.threshold=300"
$Zeile = $Zeile -replace "idm.princ=.+/.+","idm.princ=$princi"
$Zeile = $Zeile -replace "idm.keytab=D:/sso/.+.keytab","idm.keytab=D:/sso/$princis.keytab"
#BIlaunchpad.propertiers, CmcApp.properties, OpenDocument.properties
$Zeile = $Zeile -replace "cms.default=.+","cms.default=$env"
#Session-Timeouts
$Zeile = $Zeile -replace "session-timeout>\d+</session-timeout>","session-timeout>120</session-timeout>"
#Kerberos-Filter aktivieren
$Zeile = $Zeile -replace "<!--123",""
$Zeile = $Zeile -replace "321-->",""
}
elseif($env -eq '@DEV') {
#global.properties
$Zeile = $Zeile -replace "max.tree.children.threshold=\d+","max.tree.children.threshold=300"
$Zeile = $Zeile -replace "idm.princ=.+/.+","idm.princ=$princd"
$Zeile = $Zeile -replace "idm.keytab=D:/sso/.+.keytab","idm.keytab=D:/sso/$princds.keytab"
#BIlaunchpad.propertiers, CmcApp.properties, OpenDocument.properties
$Zeile = $Zeile -replace "cms.default=.+","cms.default=$env"
#Session-Timeouts
$Zeile = $Zeile -replace "session-timeout>\d+</session-timeout>","session-timeout>120</session-timeout>"
#Kerberos-Filter aktivieren
$Zeile = $Zeile -replace "<!--123",""
$Zeile = $Zeile -replace "321-->",""
}
elseif($env -eq '@ADM') {
#global.properties
$Zeile = $Zeile -replace "max.tree.children.threshold=\d+","max.tree.children.threshold=300"
$Zeile = $Zeile -replace "idm.princ=.+/.+","idm.princ=$princa"
$Zeile = $Zeile -replace "idm.keytab=D:/sso/.+.keytab","idm.keytab=D:/sso/$princas.keytab"
#BIlaunchpad.propertiers, CmcApp.properties, OpenDocument.properties
$Zeile = $Zeile -replace "cms.default=.+","cms.default=$env"
#Session-Timeouts
$Zeile = $Zeile -replace "session-timeout>\d+</session-timeout>","session-timeout>120</session-timeout>"
#Kerberos-Filter aktivieren
$Zeile = $Zeile -replace "<!--123",""
$Zeile = $Zeile -replace "321-->",""
}
elseif($env -eq '@PRD_EXT') {
#global.properties
$Zeile = $Zeile -replace "max.tree.children.threshold=\d+","max.tree.children.threshold=300"
$Zeile = $Zeile -replace "idm.princ=.+/.+","idm.princ=$princpe"
$Zeile = $Zeile -replace "idm.keytab=D:/sso/.+.keytab","idm.keytab=D:/sso/$princpes.keytab"
#BIlaunchpad.propertiers, CmcApp.properties, OpenDocument.properties
$Zeile = $Zeile -replace "cms.default=.+","cms.default=$princpesrv"
#Session-Timeouts
$Zeile = $Zeile -replace "session-timeout>\d+</session-timeout>","session-timeout>120</session-timeout>"
#Kerberos-Filter aktivieren
$Zeile = $Zeile -replace "<!--123",""
$Zeile = $Zeile -replace "321-->",""
#cms.visible BIlaunchpad.properties und CmcApp.properties
$Zeile = $Zeile -replace "cms.visible=.+","cms.visible=false"
#authentification.visible BIlaunchpad.properties und CmcApp.properties
$Zeile = $Zeile -replace "authentication.visible=.+","authentication.visible=false"
#authentification.default BIlaunchpad.properties und CmcApp.properties
$Zeile = $Zeile -replace "authentification.default=.+","authentification.default=secEnterprise"
#PostLogout_html kopieren
Copy-Item -Path $logout_src -Destination $logout_dst
}
elseif($env -eq '@INT_EXT') {
#global.properties
$Zeile = $Zeile -replace "max.tree.children.threshold=\d+","max.tree.children.threshold=300"
$Zeile = $Zeile -replace "idm.princ=.+/.+","idm.princ=$princie"
$Zeile = $Zeile -replace "idm.keytab=D:/sso/.+.keytab","idm.keytab=D:/sso/$princies.keytab"
#BIlaunchpad.propertiers, CmcApp.properties, OpenDocument.properties
$Zeile = $Zeile -replace "cms.default=.+","cms.default=$princiesrv"
#Session-Timeouts
$Zeile = $Zeile -replace "session-timeout>\d+</session-timeout>","session-timeout>120</session-timeout>"
#Kerberos-Filter aktivieren
$Zeile = $Zeile -replace "<!--123",""
$Zeile = $Zeile -replace "321-->",""
#cms.visible BIlaunchpad.properties und CmcApp.properties
$Zeile = $Zeile -replace "cms.visible=.+","cms.visible=false"
#authentification.visible BIlaunchpad.properties und CmcApp.properties
$Zeile = $Zeile -replace "authentication.visible=.+","authentication.visible=false"
#authentification.default BIlaunchpad.properties und CmcApp.properties
$Zeile = $Zeile -replace "authentification.default=.+","authentification.default=secEnterprise"
#PostLogout_html kopieren
Copy-Item -Path $logout_src -Destination $logout_dst
}
# Nur bei der ersten Zeile wird die Alte Datei ("leer") neu angelegt (überschrieben)!
If($ZeilenZähler -eq 1) {
Out-File -FilePath $Datei.Fullname -InputObject $Zeile -Force
}
Else {
# jede weitere Zeile an die neue erstellte Datei anhängen (Parameter Append)
Out-File -FilePath $Datei.Fullname -InputObject $Zeile -Force -Append
}
# Zeilenzähler hochsetzen
$ZeilenZähler++
}
}
동일한 파일에 있어야하나요, 아니면 스크립트에서로드 할 수 있습니까? –
좋습니다! 작동하지만 어떻게 오류를 감지해야합니까? 어떻게 오류나 경고 또는 정보를 말할 수 있습니까? Foreach 루프에 넣으면 로그 파일에 같은 줄이 많이 있습니다. 한 번만 쓰고 더 멀리 말할 수있는 방법은 무엇입니까? –
이 기능을 하나의 별도 파일에 보관할 수 있습니다. 당신이해야 할 일은 그 파일을 한 번 실행하면 특정 세션에 대한 로그 저장을위한'write-Host' cmdlet가 생성됩니다. –