2011-10-20 10 views
36

Tengo el siguiente código y actualmente carga toda la información en la pantalla. Quiero que inicie sesión en un archivo de registro en D: \ Apps \ Logs.Crear archivo de registro en Powershell

El archivo de registro debe tener el nombre del equipo que se está cargando en contra - por lo COMPUTERNAME.log

Cualquier idea de cómo puedo hacer esto?

Gracias

$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: El término 'Entrar' no se reconoce como el nombre de un cmdlet, guión archivo o programa operable. Compruebe que se haya incluido la ortografía del nombre , verifique que la ruta sea correcta y vuelva a intentarlo. ¿Tiene también una función de registro? – Hecatonchires

Respuesta

86

poner esto en la parte superior de su archivo:

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

Function LogWrite 
{ 
    Param ([string]$logstring) 

    Add-content $Logfile -value $logstring 
} 

luego vuelva a colocar sus llamadas con Write-hostLogWrite.

+0

gracias por eso - funciona bien pero no muestra la versión de TCPIP.sys ahora - solo muestra "TCPIP.sys" - lo mismo para DFSR.exe. Cambié el Write-Host a LogWrite pero esos dos no muestran la versión en el archivo de registro. Además, ¿alguna idea de cómo vuelvo a escribir el archivo de registro cada vez que se ejecuta? Actualmente agrega el archivo de registro; me gustaría si solo puede crear uno nuevo cada vez. Gracias. – lara400

+2

Para las propiedades de un objeto, debe encapsular todo entre paréntesis con un $ en el frente. Intente cambiarlo a: '$ (TCPIP.sys)' – JNK

+1

Para hacer que el archivo de registro rehaga cada vez, debe agregar otra sección en la parte superior para eliminar/crear el archivo si existe. – JNK

25

Una función que lleva estos principios un poco más allá.

  1. Marca de tiempo de los complementos: no se puede tener un registro sin indicaciones de fecha y hora.
  2. Agregar un nivel (utiliza INFO por defecto) lo que significa que puede resaltar grandes problemas.
  3. Permite la salida de la consola opcional. Si no configura un destino de registro, simplemente lo bombea.

    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

El uso de este Log-Entry framework:

Guión:

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"} 
    } 
} 

pantalla se muestra: Screen output

archivo de registro (en 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 
Cuestiones relacionadas