I have a script which is using the EXIF data from a JPG file to find the DateTaken
value. Once found, place the data in $Year
and $Month
variables.
$objShell = New-Object -ComObject Shell.Application
$folders = (Get-ChildItem G:\ServerFolders\Photos\UnSorted\ -Directory -Recurse -force).FullName
foreach ($Folder in $folders) {
$objfolder = $objShell.Namespace($folder)
foreach ($file in $objFolder.Items()) {
if ($objfolder.GetDetailsOf($file, 156) -eq ".jpg") {
$yeartaken = ($objFolder.GetDetailsOf($File, 12)).Split("/")[2].Split(" ")[0]
$month = $objFolder.GetDetailsOf($File, 12).Split("/")[1]
$monthname = (Get-Culture).DateTimeFormat.GetMonthName($month)
Write-Host $file.Name
}
}
}
So, if the file has a DateTaken as 06/10/2016, $yeartaken
is 2016
and $month
is 10
I then to Get-Culture
to convert the 10 into October. This doesn't work because it's seeing $month
as a string.
Cannot convert argument "month", with value: "10", for "GetMonthName" to type "System.Int32": "Cannot convert value "10" to type "System.Int32". Error: "Input string was not in a correct format."" At line:1 char:3 + (Get-Culture).DateTimeFormat.GetMonthName($month) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodException + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
I've tried to convert it to a Integer value using casting or converting, but for some reason it won't convert.
PS> [int]$Test = $month Cannot convert value "10" to type "System.Int32". Error: "Input string was not in a correct format." At line:1 char:1 + [int]$Test = $month + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException + FullyQualifiedErrorId : RuntimeException