2017-12-01 9 views
-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++ 
    } 
} 

答えて

0

あなたはこの

function Write-Host 
{ 
    [CmdletBinding()] 
    Param 
    ( 
     [Parameter(Mandatory=$true, 
       ValueFromPipelineByPropertyName=$true)] 
     [ValidateNotNullOrEmpty()] 
     [Alias("LogContent")] 
     [string]$Message, 
     [Parameter(Mandatory=$false)] 
     [Alias('LogPath')] 
     [string]$Path='c:\LogFile.log',  #creating Log file with current date 
     [Parameter(Mandatory=$false)] 
     [ValidateSet("Error","Warn","Info")] 
     [string]$Level="Info", 
     [Parameter(Mandatory=$false)] 
     [switch]$NoClobber 
    ) 

    Begin 
    { 
     # Set VerbosePreference to Continue so that verbose messages are displayed. 
     $VerbosePreference = 'Continue' 
    } 
    Process 
    { 
     # If the file already exists and NoClobber was specified, do not write to the log. 
     if ((Test-Path $Path) -AND $NoClobber) { 
      Write-Error "Log file $Path already exists, and you specified NoClobber. Either delete the file or specify a different name." 
      Return 
     } 

     # If attempting to write to a log file in a folder/path that doesn't exist create the file including the path. 
     elseif (!(Test-Path $Path)) { 
      Write-Verbose "Creating $Path." 
      $NewLogFile = New-Item $Path -Force -ItemType File 
      } 

     else { 
      # Nothing to see here yet. 
     } 

     # Format Date for our Log File 
     $FormattedDate = Get-Date -Format "yyyy-MM-dd HH:mm:ss"    

     # Write message to error, warning, or verbose pipeline and specify $LevelText 
     switch ($Level) { 
      'Error' { 
       Write-Error $Message 
       $LevelText = 'ERROR:' 
       } 
      'Warn' { 
       Write-Warning $Message 
       $LevelText = 'WARNING:' 
       } 
      'Info' { 
       Write-Verbose $Message 
       $LevelText = 'INFO:' 
       } 
      } 

     # Write log entry to $Path 
     "$FormattedDate $LevelText $Message" | Out-File -FilePath $Path -Append 
    } 
    End 
    { 
    } 
} 

のようなログ機能を定義することができますし、Write-Hostでこの関数を呼び出すことができます。 Write-Hostを使用するたびに、その内容がログファイルに保存されます。 例:あなたは

Write-Host "Execution starts!" 

を書く場合 "実行が開始されます!"ログファイルに保存されます。

+0

同じファイルにする必要がありますか、それともスクリプトで読み込むだけですか? –

+0

動作しますが、どのようにエラーを検出する必要がありますか?そして、私はそのエラーや警告や情報をどうすればいいのですか?また、Foreachループに配置すると、ログファイルに同じ行がたくさんあります。これを一度だけ書き、さらに進んでいくにはどうすればいいですか? –

+2

この機能は別のファイルに保存できます。何をする必要があるのですが、そのファイルを一度実行するだけで、特定のセッションのログを保存するための 'write-Host'コマンドレットが作成されます。 –

関連する問題