Add Powershell Modules & NuGet Repo/Artifactory-Functions.psm1
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
<#
|
||||
Author: Gabe Kerntke
|
||||
Date: 05-04-2026
|
||||
|
||||
.Synopsis
|
||||
Module for testing, downloading, installing, and verifying of apps from Artifactory
|
||||
|
||||
.Modified
|
||||
2026-05-04 (GabeK) - Original script created
|
||||
#>
|
||||
|
||||
Set-StrictMode -Version 2.0
|
||||
|
||||
#Region Functions
|
||||
#Function checks for 32 or 64 bit processor and then pulls list of applications accordingly
|
||||
Function Get-Software ($CPU = $ENV:PROCESSOR_ARCHITECTURE) {
|
||||
If ($CPU -eq 'AMD64') {
|
||||
$64bit = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*
|
||||
$32bit = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*
|
||||
$32bit + $64bit
|
||||
}
|
||||
Else { Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* }
|
||||
}
|
||||
|
||||
#Function to test if communication with the Artifactory is possible
|
||||
Function Test-Artifactory {
|
||||
$JFrog_URL = "https://URLHERE:PORT"
|
||||
try {
|
||||
$JFrog_Test = Invoke-WebRequest $JFrog_URL | Select-Object -ExpandProperty StatusCode
|
||||
}
|
||||
catch {
|
||||
Write-Output "URL does not accept current TLS settings:"
|
||||
[Net.ServicePointManager]::SecurityProtocol
|
||||
Write-Output "`n"
|
||||
Write-Output "Adding TLS 1.2"
|
||||
#Adds TLS version 1.2 for communication
|
||||
[Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
|
||||
$JFrog_Test = Invoke-WebRequest $JFrog_URL | Select-Object -ExpandProperty StatusCode
|
||||
}
|
||||
|
||||
If ($JFrog_Test -eq "200") {
|
||||
return $true
|
||||
}
|
||||
Else {
|
||||
Write-Output "Error: $JFrog_Test"
|
||||
Write-Output "Can't communicate with the $JFrog_URL. Exiting"
|
||||
Exit
|
||||
}
|
||||
}
|
||||
|
||||
#Lists installers from Artifactory
|
||||
Function Get-Installer_List_Artifactory {
|
||||
$Artifactory_Full_Path = "$Artifactory_URL/api/storage$Artifactory_Installer_Path"
|
||||
|
||||
# Show files only
|
||||
Invoke-RestMethod -Uri $Artifactory_Full_Path -Credential $Creds | Select-Object -ExpandProperty children |
|
||||
Select-Object -ExpandProperty uri | Sort-Object -Descending | Select-Object -First 1
|
||||
}
|
||||
|
||||
Function Get-From_Artifactory {
|
||||
$Download_URL = $Artifactory_URL + $Artifactory_Installer_Path + $Installer_Name
|
||||
# Ensure the folder exists
|
||||
If ((Test-Path $Dest_Path) -eq $False) {
|
||||
New-Item -ItemType directory -Path $Dest_Path
|
||||
}
|
||||
Invoke-WebRequest $Download_URL -Credential $Creds -OutFile $Dest_File
|
||||
}
|
||||
|
||||
#Function to install the downloaded installer
|
||||
Function Install-App {
|
||||
$Install = Start-Process $Dest_File -ArgumentList $Install_Parameters -Wait -PassThru
|
||||
$ExitCode = ($Install).ExitCode
|
||||
Read-ExitCode -exitcode $ExitCode
|
||||
}
|
||||
|
||||
#Function checks the exitcode
|
||||
Function Read-ExitCode {
|
||||
If ($ExitCode -eq 0) {
|
||||
Write-Host "Script was Successful"
|
||||
Start-Sleep 10
|
||||
(Get-Software | Select-Object DisplayName, DisplayVersion | Where-Object { $_.DisplayName -like "*$App_Name*" } | Format-List | Out-string).Trim()
|
||||
Remove-Item $Dest_File -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
ElseIf ($ExitCode -eq 3010) {
|
||||
Write-Host "Script was Successful, but a reboot is required."
|
||||
Start-Sleep 10
|
||||
(Get-Software | Select-Object DisplayName, DisplayVersion | Where-Object { $_.DisplayName -like "*$App_Name*" } | Format-List | Out-string).Trim()
|
||||
Remove-Item $Dest_File -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
ElseIf ($ExitCode -eq 1642) {
|
||||
Write-Host "MUI version not detected, please reinstall Adobe to update."
|
||||
Remove-Item $Dest_File -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
Else {
|
||||
Write-Host `n
|
||||
Write-Host "Failed... Exit Code:"$ExitCode
|
||||
Remove-Item $Dest_File -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
}
|
||||
#EndRegion
|
||||
Reference in New Issue
Block a user