summaryrefslogtreecommitdiff
path: root/windows/win_file_version.ps1
diff options
context:
space:
mode:
authorSam Liu <sam.liu@activenetwork.com>2015-11-11 13:30:09 +0800
committerSam Liu <sam.liu@activenetwork.com>2015-11-11 13:30:09 +0800
commit96d044192c82ecf271c7bdca218ad16b34830228 (patch)
tree19e75d670362cb0129e95c6a5dc6e06b3ca32a30 /windows/win_file_version.ps1
parent7d8dd6e21051cb548c731fc85f76deb980dc66a8 (diff)
downloadansible-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.ps181
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;
+