Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documentation related functions cause an exception when calling "Parse" on machines with date format dd/mm/yyyy. #44

Closed
illuvtar opened this issue Mar 7, 2022 · 11 comments

Comments

@illuvtar
Copy link

illuvtar commented Mar 7, 2022

Documentation related functions cause an exception when calling "Parse" on machines with date format dd/mm/yyyy.
or month and day are swapped if day value 12 or below

Error:

Get documentation info for Prod_Win_WindowsUpdates_Broad (Update Policies)
MethodInvocationException: Exception calling "Parse" with "1" argument(s): "String '02/15/2022 01:50:53' was not recognized as a valid DateTime."
InvalidOperation: You cannot call a method on a null-valued expression.
InvalidOperation: You cannot call a method on a null-valued expression.

Code: Documentation.psm1

@Micke-K
Copy link
Owner

Micke-K commented Mar 7, 2022

Hello!

I cannot reproduce this even if I change my date/time format.

createdDateTime, lastModifiedDateTime and modifiedDateTime should be stored in the "2021-08-10T04:42:10.4104838Z" format. I cannot find any object that stores it in '02/15/2022 01:50:53' format as the error states.

How does it look in the detail view? Can you attach the policy that you are trying to document?

Cheers!

@illuvtar
Copy link
Author

illuvtar commented Mar 7, 2022

I was able to replicate this in a Windows Sandbox using the following:

  1. Get current culture information (sandbox returned en-US for me)
Get-Culture
#LCID             Name             DisplayName
#----             ----             -----------
#1033             en-US            English (United States)
  1. Set culture info to en-NZ (any country with dd/mm/yyyy date format will work)
Set-Culture -CultureInfo en-NZ
  1. Restart powershell
  2. Run .\Start-IntuneManagement.ps1 -ShowConsoleWindow
  3. Document attached json or any config with day created/lastmodified on the 13th or above and check console for Parse errors

I was able to work around the issue with ([DateTime]::Parse(([datetime]$obj.createdDateTime).ToString((get-culture))))

Prod_iOS_Compliance.zip

Hope this helps replicate the issue.

Thanks

@Micke-K
Copy link
Owner

Micke-K commented Mar 7, 2022

I cannot reproduce it no matter what I do.

Can you try this file
Documentation.zip
?

@microsoftems
Copy link

Similar errors in the console:

Loading Prod_iOS_Compliance
Get documentation info for Prod_iOS_Compliance (Compliance Policies)
WARNING: Failed to parse date from string 02/15/2022 03:51:28
WARNING: Failed to parse date from string 02/15/2022 03:51:28

Resulting documents now contain Created and Last modified date/time in the format mm/dd/yyyy hh:mm:ss
image

@Micke-K
Copy link
Owner

Micke-K commented Mar 7, 2022

That is with the updated psm1. I did a try/catch statement and logged if it failed to parse. I still can understand why the date/time format is completely different from what I get from Graph. Unless something has changed or is different based on where the tenant is.

I found this link where it suggests that it might be a bug somewhere. In .NET?

microsoftgraph/msgraph-sdk-dotnet#79

@Micke-K
Copy link
Owner

Micke-K commented Mar 7, 2022

Can you try this and let me know what it says in the log. Just some more logging

Documentation.zip

Cheers!

@martincaddick
Copy link

Where is the tenant? In the past I've seen different issues depending on where the tenant is. We're a bit different down under ;-)

@Micke-K
Copy link
Owner

Micke-K commented Mar 10, 2022

My tenant us in Australia. I live in Sydney and I do know things are a bit different here :). I used to live in Sweden so I know regional settings can be a big issue. Date conversations has been a problem for a long time.

I still can"t figure out why it returns a different date format for you. I wonder where that happens. If use the same query in Graph Explorer, what do you get then?

@Micke-K
Copy link
Owner

Micke-K commented Mar 17, 2022

Hello!

Looks like this is a PowerShell 6+ issue.

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertfrom-json?view=powershell-7.2#notes

Try starting the script with PowerShell 5 eg add -version 5 to the command line.

@Micke-K
Copy link
Owner

Micke-K commented Apr 26, 2022

Try the new version. It uses -version 5 in the cmd files. Which should force it back to version 5 behaviour.

Let me know how it goes

@Micke-K
Copy link
Owner

Micke-K commented Sep 10, 2022

Closing this. This happens when using PowerShell 6+. Cmd files will always user PowerShell 5.

Cheers!

@Micke-K Micke-K closed this as completed Sep 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants