Windows Vista Forums

how to get powershell to write to event log or write a log file?

  1. #1


    scale Guest

    how to get powershell to write to event log or write a log file?

    I have a script using

    remove-item
    and
    copy-item

    I would like to have a TXT file outputed to say that the scrip ran succesfull.

    Something like
    remove-item C:\temp -vervbose
    Echo the file removal was successful | C:\logs\removal.log
    copy-item C:\temp -destination D:\temp
    echo the file copy was successful | C:\logs\copy.log




    All i am trying to do is verify that the date stamps on the copied files
    have changed or that the files are deleted and then are written to the new
    location and that succeeded.

    If i could do this with an eventlog event that would be great as well and
    probably preferred.

    any help?


      My System SpecsSystem Spec

  2. #2


    Chris Dent Guest

    Re: how to get powershell to write to event log or write a log file?


    Would you want to capture any error returned from the two commands? e.g.

    $LogFile = "RemoveItem.log"

    Remove-Item $SomeItem -ErrorVariable "RemoveErr"
    If ($RemoveErr) {
    "Error removing $SomeItem" >> $LogFile
    $RemoveErr >> $LogFile
    } else {
    "Removed $SomeItem" >> $LogFile
    }

    You can write error messages to the Event Log with:

    [Diagnostics.EventLog]::WriteEntry( ... )

    The simplest form of that is:

    [Diagnostics.EventLog]::WriteEntry("Source", "Message")

    Which adds an entry to the Application Event Log.

    See:

    http://msdn.microsoft.com/en-us/libr...riteentry.aspx

    Chris

      My System SpecsSystem Spec

  3. #3


    Alex Guest

    Re: how to get powershell to write to event log or write a log file?

    Another full-blown solution could be using log4net. Once it is
    installed, add this to your profile:

    [Reflection.Assembly]::LoadFrom("log4net.dll") # you may want to
    adjust the path here
    [log4net.Config.XmlConfigurator]::Configure( `
    (new-object System.IO.FileInfo -ArgumentList `
    (ls "log4net_config.xml").FullName `
    ) )
    $global:Log = [log4net.LogManager]::GetLogger("Powershell.PSTest")

    After that, you can use something like $Log.Warn("hello, log")

    Read log4net documentation on how to configure the format and location
    of log files

    Cheers

    On Sep 25, 9:50*am, Chris Dent <ch...@newsgroup> wrote:

    > Would you want to capture any error returned from the two commands? e.g.
    >
    > $LogFile = "RemoveItem.log"
    >
    > Remove-Item $SomeItem -ErrorVariable "RemoveErr"
    > If ($RemoveErr) {
    > * *"Error removing $SomeItem" >> $LogFile
    > * *$RemoveErr >> $LogFile} else {
    >
    > * *"Removed $SomeItem" >> $LogFile
    >
    > }
    >
    > You can write error messages to the Event Log with:
    >
    > [Diagnostics.EventLog]::WriteEntry( ... )
    >
    > The simplest form of that is:
    >
    > [Diagnostics.EventLog]::WriteEntry("Source", "Message")
    >
    > Which adds an entry to the Application Event Log.
    >
    > See:
    >
    > http://msdn.microsoft.com/en-us/libr...ics.eventlog.w...
    >
    > Chris

      My System SpecsSystem Spec


how to get powershell to write to event log or write a log file?