diff options
author | Sam Liu <sam.liu@activenetwork.com> | 2015-11-11 13:30:09 +0800 |
---|---|---|
committer | Sam Liu <sam.liu@activenetwork.com> | 2015-11-11 13:30:09 +0800 |
commit | 96d044192c82ecf271c7bdca218ad16b34830228 (patch) | |
tree | 19e75d670362cb0129e95c6a5dc6e06b3ca32a30 /windows/win_file_version.ps1 | |
parent | 7d8dd6e21051cb548c731fc85f76deb980dc66a8 (diff) | |
download | ansible-modules-extras-96d044192c82ecf271c7bdca218ad16b34830228.tar.gz |
new module win_file_version
Diffstat (limited to 'windows/win_file_version.ps1')
-rw-r--r-- | windows/win_file_version.ps1 | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/windows/win_file_version.ps1 b/windows/win_file_version.ps1 new file mode 100644 index 00000000..4ee8c6e3 --- /dev/null +++ b/windows/win_file_version.ps1 @@ -0,0 +1,81 @@ +#!powershell + +#this file is part of Ansible +#Copyright © 2015 Sam Liu <sam.liu@activenetwork.com> + +#This program is free software: you can redistribute it and/or modify +#it under the terms of the GNU General Public License as published by +#the Free Software Foundation, either version 3 of the License, or +#(at your option) any later version. + +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. + +#You should have received a copy of the GNU General Public License +#along with this program. If not, see <http://www.gnu.org/licenses/>. + +# WAIT_JSON +# POWERSHELL_COMMON + +$params = Parse-Args $args; + +$result = New-Object psobject @{ + win_file_version = New-Object psobject + changed = $false +} + + +If ($params.path) { + $path = $params.path.ToString() + If (-Not (Test-Path -Path $path -PathType Leaf)){ + Fail-Json $result "Specfied path: $path not exists or not a file" + } + $ext = [System.IO.Path]::GetExtension($path) + If ( $ext -notin '.exe', '.dll'){ + Fail-Json $result "Specfied path: $path is not a vaild file type, Must be DLL or EXE." + } +} +Else{ + Fail-Json $result "Specfied path: $path not define." +} + +Try { + $file_version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileVersion + If ($file_version -eq $null){ + $file_version = '' + } + $product_version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).ProductVersion + If ($product_version -eq $null){ + $product_version= '' + } + $file_major_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileMajorPart + If ($file_major_part -eq $null){ + $file_major_part= '' + } + $file_minor_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileMinorPart + If ($file_minor_part -eq $null){ + $file_minor_part= '' + } + $file_build_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileBuildPart + If ($file_build_part -eq $null){ + $file_build_part = '' + } + $file_private_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FilePrivatePart + If ($file_private_part -eq $null){ + $file_private_part = '' + } +} +Catch{ +} + +Set-Attr $result.win_file_version "path" $path.toString() +Set-Attr $result.win_file_version "file_version" $file_version.toString() +Set-Attr $result.win_file_version "product_version" $product_version.toString() +Set-Attr $result.win_file_version "file_major_part" $file_major_part.toString() +Set-Attr $result.win_file_version "file_minor_part" $file_minor_part.toString() +Set-Attr $result.win_file_version "file_build_part" $file_build_part.toString() +Set-Attr $result.win_file_version "file_private_part" $file_private_part.toString() +Exit-Json $result; + |