I have an existing set of PowerShell scripts and functions that act as a universal software installer that have been tested over the past six months, which take input from a CSV file, with minimal changes required on a regular basis. Simply enter the name of the application as it is installed through Programs and Features or Get-Package into the CSV file, if they are MSI files it is as simple as dropping them in the folder and it will detect the newest file in the folder. It obtains the version information from the MSI package and obtains the version information of the installed package, if the MSI is newer it will upgrade the application automatically, which could be used as a startup script or for post-imaging software installation. It also will install software from executables, with the parameters specified in the MSI file, and check the version of the executable vs. the version that is installed, when this is not possible, the installer version can be manually entered into the CSV file, required for some applications such as Firefox, etc., and also MSP packages, as they do not contain a version field. It has been a solid tool for a 170-user environment and desk-side touches and support calls are minimal.
I have a set of account management tools that may be of interest, which have reduced our onboarding process to just over a minute with new accounts and all access, email, distribution lists, home folders, ACLs, security structure by job role, etc. | joelmeckert on Github