1 #!powershell
2 
3 # Copyright: (c) 2015, Sam Liu <sam.liu@activenetwork.com>
4 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
5 
6 #Requires -Module Ansible.ModuleUtils.Legacy
7 
8 $params = Parse-Args $args -supports_check_mode $true
9 
10 $result = @{
11     win_file_version = @{}
12     changed = $false
13 }
14 
15 $path = Get-AnsibleParam -obj $params -name "path" -type "path" -failifempty $true -resultobj $result
16 
17 If (-Not (Test-Path -LiteralPath $path -PathType Leaf)){
18     Fail-Json $result "Specified path $path does not exist or is not a file."
19 }
20 $ext = [System.IO.Path]::GetExtension($path)
21 If ( $ext -notin '.exe', '.dll'){
22     Fail-Json $result "Specified path $path is not a valid file type; must be DLL or EXE."
23 }
24 
25 Try {
26     $_version_fields = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path)
27     $file_version = $_version_fields.FileVersion
28     If ($null -eq $file_version){
29         $file_version = ''
30     }
31     $product_version = $_version_fields.ProductVersion
32     If ($null -eq $product_version){
33         $product_version= ''
34     }
35     $file_major_part = $_version_fields.FileMajorPart
36     If ($null -eq $file_major_part){
37         $file_major_part= ''
38     }
39     $file_minor_part = $_version_fields.FileMinorPart
40     If ($null -eq $file_minor_part){
41         $file_minor_part= ''
42     }
43     $file_build_part = $_version_fields.FileBuildPart
44     If ($null -eq $file_build_part){
45         $file_build_part = ''
46     }
47     $file_private_part = $_version_fields.FilePrivatePart
48     If ($null -eq $file_private_part){
49         $file_private_part = ''
50     }
51 }
52 Catch{
53     Fail-Json $result "Error: $_.Exception.Message"
54 }
55 
56 $result.win_file_version.path = $path.toString()
57 $result.win_file_version.file_version = $file_version.toString()
58 $result.win_file_version.product_version = $product_version.toString()
59 $result.win_file_version.file_major_part = $file_major_part.toString()
60 $result.win_file_version.file_minor_part = $file_minor_part.toString()
61 $result.win_file_version.file_build_part = $file_build_part.toString()
62 $result.win_file_version.file_private_part = $file_private_part.toString()
63 Exit-Json $result;
64