Ti racconterò di PSADT non appena possibile, promesso. Per il momento, ti basti sapere che è un framework PowerShell che ti facilita (e di tanto) la vita quando hai bisogno di creare pacchetti di installazione (applicazioni, configurazioni, ma banalmente anche copia dati, seppur sprecato) da dare in pasto a Microsoft Intune, quindi ai tuoi client Windows gestiti. Da poco arrivato alla versione 4.1.7, ha introdotto nella 4.1.6 diversi bugfix che le versioni 4.1.5 e inferiori “soffrono“.
Io, che avevo scritto svariati pacchetti di installazione con la versione 4.0, avevo nel frattempo migrato tutto alla versione 4.1.5 (a causa di alcune differenze importanti riportate sul sito ufficiale: psappdeploytoolkit.com/docs/getting-started/upgrade-guidance-4x-to-v41) e oggi mi ritrovo a dover scegliere se fare ulteriore upgrade. Dato che ricordavo vagamente si potesse sostituire solo le cartelle principali del modulo (ammesso di rimanere nella stessa Major Version), ho aperto una discussione ad-hoc sul forum: discourse.psappdeploytoolkit.com/t/upgrade-to-psadt-4-1-7/7081. L’esito è positivo: si può fare ancora, ma per sicurezza ho fatto un’ulteriore analisi mettendo a confronto le cartelle di template pulite tra 4.1.5 e 4.1.7.
Quanto emerso con il sempre fidato WinMerge, fa risultare palese che le cartelle del modulo (e dei tools) sono cambiate rispetto al passato, e vale quindi quanto confermato nel forum di PSADT: conviene aggiornarle del tutto, prendendo quelle della versione 4.1.7 e sovrascrivendo quelle della 4.1.5.

Partendo quindi dal presupposto che prenderò per buone le due cartelle principali (PSAppDeployToolkit e PSAppDeployToolkit.Extensions), aggiungo anche l’eseguibile (Invoke-AppDeployToolkit.exe). Andando poi un po’ più nello specifico del file PowerShell principale (Invoke-AppDeployToolkit.ps1), ti posso dire che le differenze riguardano banalmente la versione del modulo.

Si parte con la riga più prevedibile, la 112:
DeployAppScriptVersion = '4.1.7'
Che per ovvi motivi, nella precedente versione, riportava 4.1.5. Poi, nella sezione dedicata all’inizializzazione (dalla riga 296) si passa da questo:
# Import the module locally if available, otherwise try to find it from PSModulePath.
if (Test-Path -LiteralPath "$PSScriptRoot\PSAppDeployToolkit\PSAppDeployToolkit.psd1" -PathType Leaf)
{
Get-ChildItem -LiteralPath "$PSScriptRoot\PSAppDeployToolkit" -Recurse -File | Unblock-File -ErrorAction Ignore
Import-Module -FullyQualifiedName @{ ModuleName = "$PSScriptRoot\PSAppDeployToolkit\PSAppDeployToolkit.psd1"; Guid = '8c3c366b-8606-4576-9f2d-4051144f7ca2'; ModuleVersion = '4.1.5' } -Force
}
else
{
Import-Module -FullyQualifiedName @{ ModuleName = 'PSAppDeployToolkit'; Guid = '8c3c366b-8606-4576-9f2d-4051144f7ca2'; ModuleVersion = '4.1.5' } -Force
}
a questo:
# Import the module locally if available, otherwise try to find it from PSModulePath.
if (Test-Path -LiteralPath "$PSScriptRoot\PSAppDeployToolkit\PSAppDeployToolkit.psd1" -PathType Leaf)
{
Get-ChildItem -LiteralPath "$PSScriptRoot\PSAppDeployToolkit" -Recurse -File | Unblock-File -ErrorAction Ignore
Import-Module -FullyQualifiedName @{ ModuleName = "$PSScriptRoot\PSAppDeployToolkit\PSAppDeployToolkit.psd1"; Guid = '8c3c366b-8606-4576-9f2d-4051144f7ca2'; ModuleVersion = '4.1.7' } -Force
}
else
{
Import-Module -FullyQualifiedName @{ ModuleName = 'PSAppDeployToolkit'; Guid = '8c3c366b-8606-4576-9f2d-4051144f7ca2'; ModuleVersion = '4.1.7' } -Force
}
Cambia, perciò, solo il dettaglio relativo alla versione del modulo (ModuleVersion = '4.1.7'). E per concludere, un’ultima differenza anch’essa non impattante. Si arriva al termine fino all’Invocation, dove lo Show-ADTInstallationPrompt (riga 355) passa da questo:
# Show-ADTInstallationPrompt -Message "$($adtSession.DeploymentType) failed at line $($_.InvocationInfo.ScriptLineNumber), char $($_.InvocationInfo.OffsetInLine):`n$($_.InvocationInfo.Line.Trim())`n`nMessage:`n$($_.Exception.Message)" -MessageAlignment Left -ButtonRightText OK -Icon Error -NoWait
a questo:
# Show-ADTInstallationPrompt -Message "$($adtSession.DeploymentType) failed at line $($_.InvocationInfo.ScriptLineNumber), char $($_.InvocationInfo.OffsetInLine):`n$($_.InvocationInfo.Line.Trim())`n`nMessage:`n$($_.Exception.Message)" -ButtonRightText OK -Icon Error -NoWait
In pratica è stato rimosso il -MessageAlignment Left ma l’istruzione rimane commentata (quindi non eseguita).
Cosa puoi fare? Cerca e sostituisci 4.1.5 con 4.1.7, ignora tranquillamente il -MessageAlignment Left perché stiamo parlando di una riga neanche eseguita. Così facendo hai aggiornato un pacchetto PSADT 4.1.5 a 4.1.7 con fatica pressoché zero.
In caso di errori, dubbi o boiate riportate in articolo sai già cosa fare, l’area commenti è a tua totale disposizione :-)
#KeepItSimple