Need help on date variable

Welcome Forums General PowerShell Q&A Need help on date variable

This topic contains 1 reply, has 2 voices, and was last updated by

Senior Moderator
3 weeks, 4 days ago.

  • Author
  • #178332

    Topics: 1
    Replies: 0
    Points: -8
    Rank: Member

    Hi All,

    I am still a newbie in PowerShell, and I normally search for existing scripts, study it and modify it to my requirements. Right now, I have been testing a script, run thru Task Scheduler, that will provide me successful RDP login information from our servers, and save the result to a CSV file. However, I have been stuck all afternoon on a date variable that will provide the start time in my filter.

    The script will work if put the date itself on the variable, but fails everytime I try to use the Get-Date:

    #$StartDate = (Get-Date).AddDays(-7).ToString("dd-MMM-yyyy") #–> does not work
    #$StartDate = (Get-Date).AddDays(-7) #–> does not work
    $StartDate = "1-Sep-2019" #–> Works
    $StartDate = "9/1/2019" #–> Works

    Can anyone help to review this code, and for the life of me, I can't understand why using Get-Date does not work. Here is the full script I am trying to run, and thanks in advance for any hint on how to resolve this:

    Start-Transcript -path "D:\temp\Get-User-Logins_$(Get-Date -f yyyyMMddHHmm).log"
    $Computers = Get-Content "D:\temp\Server list.txt"
    Write-Output "Processing the computers"
    $LogEntries = Invoke-Command -Computername $Computers -Authentication NegotiateWithImplicitCredential -ThrottleLimit 10 -ErrorAction "SilentlyContinue" -Scriptblock {
        # Get the date 7 days ago as start date
    	#$StartDate = (Get-Date).AddDays(-7).ToString("dd-MMM-yyyy") #--> does not work
    	#$StartDate = (Get-Date).AddDays(-7)   #--> does not work
    	$StartDate = "1-Sep-2019"  #--> Works
    	$StartDate = "9/1/2019"  #--> Works
        $LogOutput = @()
        $LogFilter = @{
            LogName = 'Microsoft-Windows-TerminalServices-LocalSessionManager/Operational'
            ID = 22 
            StartTime = $StartDate
        $LogOutput = Get-WinEvent -FilterHashtable $LogFilter
        $LogOutput | Foreach { 
            $entry = [xml]$_.ToXml()
            [array]$EVOutput += New-Object PSObject -Property @{
                TimeCreated = $_.TimeCreated
                User = $entry.Event.UserData.EventXML.User
                IPAddress = $entry.Event.UserData.EventXML.Address
                EventID = $entry.Event.System.EventID
    			EventRecordID = $entry.Event.System.EventRecordID
                ServerName = $env:COMPUTERNAME
    Write-Output "Writing the output to the file"
    $FilteredOutput += $LogEntries | Select ServerName, TimeCreated, User, IPAddress, EventRecordID, @{Name='Action';Expression={
                if ($_.EventID -eq '22'){"Shell start"}
        $FilePath = "D:\temp\$(Get-Date -f yyyyMMddHHmm)_RDP_Report.csv"
        $FilteredOutput | Sort -Property ServerName, TimeCreated | Export-Csv $FilePath -NoTypeInformation
    Write-Output "Writing File: $FilePath"
    Write-Output "Done!"
  • #179595

    Senior Moderator
    Topics: 8
    Replies: 1085
    Points: 3,651
    Helping Hand
    Rank: Community Hero

    Looks like StartTime key doesn't take DateTime object, but only string.

    Can you raise an issue using below link.

You must be logged in to reply to this topic.