Create 7 ZIP Application using PowerShell

Introduction

I have been presenting and building automated solutions for Configuration Manager for many years. If you are a Configuration Manager administrator, automating your day-to-day activities is super important. Most of the activities we need to carry out each day are the same daily and weekly basis. As a Configuration Manager administrator, I need to save time, and then I can focus on other important tasks such as Client Health, Compliance, etc.

The good thing about Configuration Manager is that we have a built-in PowerShell module and can automate anything. In this post, I will show you how you can create a 7-ZIP Application using the Configuration Manager PowerShell module

Requirements

  • Configuration Manager Admin Console
  • Permissions to create Application / Packages

How to Create a 7-ZIP Application

On your Primary Site server or your machine where the console is installed, execute the following commands to import the module.

				
					#STEP 0 - Import the Module
Import-Module $env:SMS_ADMIN_UI_PATH.Replace("\bin\i386","\bin\configurationmanager.psd1")
$SiteCode = Get-PSDrive -PSProvider CMSITE
Set-Location "$($SiteCode.Name):\"
				
			

Unlock Seamless Hybrid-Cloud Management with Azure Automation: Enhance efficiency, security, and control in your IT environment

Discover the power of Azure Automation: Contact me today to explore how this solution can transform your hybrid-cloud management and optimize your infrastructure.
Call to Action

In our next step, we are going to download the 7-ZIP version 22.01 using the Invoke-WebRequest command and save it under our source folder

				
					#STEP 1 - Download the content
$7ZIPURL = 'https://www.7-zip.org/a/7z2201-x64.exe'
$SourceFolder = 'F:\Sources\Software\7-ZIP\22.01\X64\EXE\7z2201-x64.exe'
Invoke-WebRequest -Uri $7ZIPURL -OutFile $SourceFolder 
				
			

Now that we have the source files, we can read out the version info using the Get-Item command and prepare additional variables for the application creation.

				
					#STEP 2 - Get the file information
$FileInfo = Get-Item -Path $SourceFolder
$Version = $FileInfo.VersionInfo.ProductVersion
$FileName = $FileInfo.BaseName

#Define additional variables for 7-ZIP Application
$ApplicationName = '7-ZIP'
$CommandLine = "$($FileInfo.Name) /S"
$DeploymentTypeName = "Install - $FileName"
$ContentLocation = '\\cm01\sources\Software\7-ZIP\22.01\X64\EXE'
$DistributionPointGroupName = 'All Content'
$InstallCollectionName = "SWD - $ApplicationName - $Version"
$LimitingCollectionName = 'All Systems'
$SoftwareAPPRootFolder = "$($SiteCode.Name):\DeviceCollection\Software"
				
			

Create the application using the New-CMApplication command let.

				
					#STEP 3 - Create the Application
    $AppProperties = @{
        Name = $ApplicationName;
        SoftwareVersion = $Version
    }

New-CMApplication @AppProperties
				
			

Before we move on with the Deployment Types, we need to create detection methods. You can create the deployment methods using the New-CMDetectionClauseDirectory and New-CMDetectionClauseFile commands. These are just examples for you.

				
					#STEP 4 - Create the Detection Methods
    $7ZIPFolderProperties = @{
        DirectoryName = '7-Zip';
        Path = 'C:\Program Files\';
        Is64Bit = $True;
        Existence = $True
    }
    $7ZIPFileProperties = @{
        FileName = '7zFM.exe';
        Path = 'C:\Program Files\7-Zip';
        Is64Bit = $True;
        PropertyType = 'Version';
        ExpectedValue = $Version;
        ExpressionOperator = 'IsEquals'
        Value = $True
    }

$7ZIPFolder = New-CMDetectionClauseDirectory @7ZIPFolderProperties
$7ZIPFile = New-CMDetectionClauseFile @7ZIPFileProperties
				
			

So now that we have the application object and detection methods, we can create the Deployment Type.

				
					#STEP 5 - Create the Deployment Type with detection methods
$DeploymentTypeProperties = @{
    InstallCommand = $CommandLine
    DeploymentTypeName = $DeploymentTypeName
    ApplicationName = $ApplicationName
    ContentLocation = $ContentLocation
    AddDetectionClause = $7ZIPFolder,$7ZIPFile
}
Add-CMScriptDeploymentType @DeploymentTypeProperties
				
			

To distribute the content to the Distribution Point Groups, use the Start-CMContentDistribution command.

				
					#STEP 6 - Distribute the Content
    $ContentProperties = @{
        ApplicationName = $ApplicationName
        DistributionPointGroupName = $DistributionPointGroupName
    }
Start-CMContentDistribution @ContentProperties
				
			

Finally, we can create the collections and deployments.

				
					#STEP 7 - Create the Collection
    $CollectionProperties = @{
        Name = $InstallCollectionName;
        LimitingCollectionName = $LimitingCollectionName;
        CollectionType = 'Device'
    }
New-CMCollection @CollectionProperties | Move-CMObject -FolderPath $SoftwareAPPRootFolder

#STEP 8 - Create the Deployment
    $DeploymentProperties = @{
        Name = $ApplicationName;
        DeployAction = 'Install';
        DeployPurpose = 'Required';
        CollectionName = $InstallCollectionName
    }
New-CMApplicationDeployment @DeploymentProperties
				
			

Summary

As you see from this example, we can build end-to-end automated solutions. We can save a lot of time. We need to take the time and invest in it.

You can download the full copy from here – Configuration-Manager/Create-7ZIPApplication.ps1 at master · Kaidja/Configuration-Manager (github.com)

Leave a Reply

Contact me

If you’re interested in learning about Create 7 ZIP Application using PowerShell. I can help you understand how this solution can benefit your organization and provide a customized solution tailored to your specific needs.

Table of Contents