I have a windows task that executes a powershell command once a time at 1:15AM
Currently, they operation works using this command
Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Export-CSV C:\temp\Microsoft-Windows-PowerShell-Operational.csv
Problem is - the file gets written over each time it is executed.
I would like to use a filename of the date it was run.
Interactively, I have this code block and it works
$filenameFormat = "c:\temp\" + (Get-Date -Format "MM_dd_yyyy") + "_MWPSO.csv"
Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Export-CSV #filenameFormat
I've tried these commands
# Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Export-CSV "c:\temp\" + (Get-Date -Format "MM_dd_yyyy") + "_MWPSO.csv"
# $filenameFormat = "c:\temp\" + (Get-Date -Format "MM_dd_yyyy") + "_MWPSO.csv" ` Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Export-CSV $filenameFormat
# $filenameFormat = "c:\temp\" + (Get-Date -Format "MM_dd_yyyy") + "_MWPSO.csv"
# Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Export-CSV $filenameFormat
Question : How do I use the newly created filename in a SINGLE line of code?
How do I use the newly created filename in a SINGLE line of code?
You're already doing it in:
.. | Export-CSV "c:\temp\" + (Get-Date -Format "MM_dd_yyyy") + "_MWPSO.csv"
Just missing parentheses so the concatenation is evaluated first:
.. | Export-CSV ("c:\temp\" + (Get-Date -Format "MM_dd_yyyy") + "_MWPSO.csv")
Alternatively you can use $(..)
for string interpolation:
.. | Export-Csv "C:\temp\$((Get-Date -Format 'MM_dd_yyyy'))_MWPSO.csv"