2011-10-20 15 views
36

Ho il codice seguente e attualmente carica tutte le informazioni sullo schermo. Voglio che acceda a un file di registro su D: \ Apps \ Logs.Crea file di registro in PowerShell

Il file di registro deve avere il nome del computer si sta caricando contro - così COMPUTERNAME.log

Qualsiasi idea di come posso fare questo?

Grazie

$computer = gc env:computername 

$onetcp = ((get-childitem c:\windows\system32\drivers\tcpip.sys).Versioninfo.ProductMajorPart).tostring() $twotcp = ((get-childitem c:\windows\system32\drivers\tcpip.sys).Versioninfo.ProductMinorPart).tostring() $threetcp = ((get-childitem c:\windows\system32\drivers\tcpip.sys).Versioninfo.ProductBuildPart).tostring() $fourtcp = ((get-childitem c:\windows\system32\drivers\tcpip.sys).Versioninfo.ProductPrivatePart).tostring() 


$onedfsr = ((get-childitem c:\windows\system32\dfsrs.exe).Versioninfo.ProductMajorPart).tostring() $twodfsr = ((get-childitem c:\windows\system32\dfsrs.exe).Versioninfo.ProductMinorPart).tostring() $threedfsr = ((get-childitem c:\windows\system32\dfsrs.exe).Versioninfo.ProductBuildPart).tostring() $fourdfsr = ((get-childitem c:\windows\system32\dfsrs.exe).Versioninfo.ProductPrivatePart).tostring() 

write-host TCPIP.sys Version on $computer is: "$onetcp.$twotcp.$threetcp.$fourtcp" Write-Host write-host DFSRS.exe Version on $computer is: "$onedfsr.$twodfsr.$threedfsr.$fourdfsr" 

Write-Host 

If (get-wmiobject win32_share | where-object {$_.Name -eq "REMINST"}) { Write-Host "The REMINST share exists on $computer" } Else { Write-Host "The REMINST share DOES NOT exist on $computer - Please create as per standards" } Write-Host 

$hotfix1 = Get-HotFix -Id KB2450944 -ErrorAction SilentlyContinue $hotfix2 = Get-HotFix -Id KB2582284 -ErrorAction SilentlyContinue $hotfix3 = Get-HotFix -Id KB979808 -ErrorAction SilentlyContinue 

If ($hotfix1) {  Write-Host "Hotfix KB2450944 is installed" 
-BackgroundColor Green -ForegroundColor Black } else { Write-Host "Hotfix KB2450944 is NOT installed - Please ensure you install this hotfix" -ForegroundColor "red" } 


If ($hotfix2) {  Write-Host "Hotfix KB2582284 is installed" 
-BackgroundColor Green -ForegroundColor Black } else { Write-Host "Hotfix KB2582284 is NOT installed - Please ensure you install this hotfix" -ForegroundColor "red" } 

If ($hotfix3) {  Write-Host "Hotfix KB979808 is installed" 
-BackgroundColor Green -ForegroundColor Black } else { Write-Host "Hotfix KB979808 is NOT installed - Please ensure you install this hotfix" -ForegroundColor "red" } 
+0

Log: Il termine 'Log' non è riconosciuto come il nome di un cmdlet, sceneggiatura file o programma eseguibile. È stata inclusa l'ortografia del nome , verificare che il percorso sia corretto e riprovare. Avete anche una funzione di registro? – Hecatonchires

risposta

86

Mettete questo nella parte superiore del file:

$Logfile = "D:\Apps\Logs\$(gc env:computername).log" 

Function LogWrite 
{ 
    Param ([string]$logstring) 

    Add-content $Logfile -value $logstring 
} 

quindi sostituire i tuoi Write-host chiamate con LogWrite.

+0

grazie per quello - funziona bene ma non mostra la versione TCPIP.sys ora - mostra solo "TCPIP.sys" - lo stesso per DFSR.exe. Ho cambiato l'host di scrittura in LogWrite ma questi due non mostrano la versione nel file di registro. Inoltre, qualche idea su come sto riscrivendo il file di registro ogni volta che viene eseguito? Attualmente aggiunge il file di registro; piacerebbe se potesse creare un nuovo ogni volta. Grazie. – lara400

+2

Per le proprietà di un oggetto, è necessario incapsulare l'intero oggetto tra parentesi con un $ a fronte. Provare a cambiarlo in: '$ (TCPIP.sys)' – JNK

+1

Per ottenere il remake del file di log ogni volta, è necessario aggiungere un'altra sezione in alto per eliminare/creare il file, se esiste. – JNK

25

Una funzione che porta questi principi un po 'oltre.

  1. Timestamp di Aggiungi - non può avere un log senza data e ora.
  2. Aggiungi un livello (utilizza INFO per impostazione predefinita) che significa che è possibile evidenziare grandi problemi.
  3. Consente l'uscita della console opzionale. Se non si imposta una destinazione di registro, semplicemente la pompa.

    Function Write-Log { 
        [CmdletBinding()] 
        Param(
        [Parameter(Mandatory=$False)] 
        [ValidateSet("INFO","WARN","ERROR","FATAL","DEBUG")] 
        [String] 
        $Level = "INFO", 
    
        [Parameter(Mandatory=$True)] 
        [string] 
        $Message, 
    
        [Parameter(Mandatory=$False)] 
        [string] 
        $logfile 
        ) 
    
        $Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss") 
        $Line = "$Stamp $Level $Message" 
        If($logfile) { 
         Add-Content $logfile -Value $Line 
        } 
        Else { 
         Write-Output $Line 
        } 
    } 
    
0

Usando questo script Log-Entry framework:

:

Function Main { 
    Log -File "D:\Apps\Logs\$Env:computername.log" 

    $tcp = (get-childitem c:\windows\system32\drivers\tcpip.sys).Versioninfo.ProductVersionRaw 
    $dfs = (get-childitem C:\Windows\Microsoft.NET\Framework\v2.0.50727\dfsvc.exe).Versioninfo.ProductVersionRaw 

    Log "TCPIP.sys Version on $computer is:" $tcp 
    Log "DFSVC.exe Version on $computer is:" $dfs 

    If (get-wmiobject win32_share | where-object {$_.Name -eq "REMINST"}) {Log "The REMINST share exists on $computer"} 
    Else {Log "The REMINST share DOES NOT exist on $computer - Please create as per standards"} 

    "KB2450944", "KB3150513", "KB3176935" | ForEach { 
     $hotfix = Get-HotFix -Id $_ -ErrorAction SilentlyContinue 
     If ($hotfix) {Log -Color Green Hotfix $_ is installed} 
     Else {Log -Color Red Hotfix $_ " is NOT installed - Please ensure you install this hotfix"} 
    } 
} 

uscita dello schermo: Screen output

file di registro (a D:\Apps\Logs\<computername>.log):

2017-05-31 Write-Log (version: 01.00.02, PowerShell version: 5.1.14393.1198) 
19:19:29.00 C:\Users\User\PowerShell\Write-Log\Check.ps1 
19:19:29.47 TCPIP.sys Version on is: {Major: 10, Minor: 0, Build: 14393, Revision: 1066, MajorRevision: 0, MinorRevision: 1066} 
19:19:29.50 DFSVC.exe Version on is: {Major: 2, Minor: 0, Build: 50727, Revision: 8745, MajorRevision: 0, MinorRevision: 8745} 
19:19:29.60 The REMINST share DOES NOT exist on - Please create as per standards 
Error at 25,13: Cannot find the requested hotfix on the 'localhost' computer. Verify the input and run the command again. 
19:19:33.41 Hotfix KB2450944 is NOT installed - Please ensure you install this hotfix 
19:19:37.03 Hotfix KB3150513 is installed 
19:19:40.77 Hotfix KB3176935 is installed 
19:19:40.77 End 
Problemi correlati