Deploy Files Anywhere Using Intune and Powershell
How do I deploy a folder to users using Intune?
I came across a scenario where I needed to deploy a folder full of PDF files for a set of users, and the folder needed to be available to all users via the Public Desktop.They needed to be deployed using Intune, since the devices are 100% cloud managed.
We can achieve this by packaging our files/folder and powershell script into a Win32 application and deploying it through Intune.
-
Create a single folder that we will use to package all the files and scripts with. I created
C:\Intune\Package
. This directory will hold the folder I want to deploy:Folder1
. This folder has a few PDF files in it (ex. one.pdf, two.pdf, etc.).Folder1
should be located atC:\Intune\Package\Folder1
. -
Create a PowerShell script and name it
DeployFiles.ps1
. Put it atC:\Intune\Package\DeployFiles.ps1
Here's the contents of the script:
1# Change this to the name of the folder you are deploying
2$Folder = "Folder1"
3
4# Parent directory of the current script being executed (ex. C:\Intune\Package)
5$PSScriptRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition
6
7# This is the folder you are deploying,
8# make sure it is located inside of the
9# parent directory of the script.
10$Source = "$PSScriptRoot\$Folder"
11
12# $Destination is the directory that the files/folder will be deployed to
13$Destination = "C:\Users\Public\Desktop\"
14
15# Move the $Folder and contents within it to the $Destination
16Copy-Item -Path $Source -Destination $Destination -Recurse -Force #-whatif
Now that the PowerShell script is done, we need to create an install command for Intune so it knows to run the script.
- Create a cmd script file and name it
deploy.cmd
. Put it atC:\Intune\Package\deploy.cmd
Here are the contents of deploy.cmd
:
1SET WorkingDir=%cd%
2SET PSPath='%WorkingDir%\DeployFiles.ps1'
3PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& %PSPath%"
You should now have 3 sets of files:
C:\Intune\Package\Folder1
- The files to deployC:\Intune\Package\DeployFiles.ps1
- The PowerShell to Copy-Item the files to the $DestinationC:\Intune\Package\deploy.cmd
- The install command that Intune will run
Now that we have everything ready to deploy, we need to package the contents of C:\Intune\Package
into a .intunewin
file that we can upload as a Win32 app to Intune.
Use the Microsoft Win32 Content Prep Tool to package the files into a file.intunewin
format.
Once you have your file.intunewin
prepared, navigate to Intune, go to Apps -> Windows -> Press Add and select the App type Windows app (Win32). Upload the file.intunewin
you created when you select the app package file.
Now configure your app, here's what I did:
-
Give the application a Name, Description, and Publisher. Go to next page.
-
Set the Install command to
deploy.cmd
, set the Uninstall command toexit
. Go to next page. -
Set the Operating system architecture and Minimum operating system to whatever values are applicable to your environment. Go to next page
-
Set the Rules format to Manually configure detection rules,
- set the Rule type to File,
- set the Path value to the same value/directory as the
$Destination
variable in the PowerShell script (ex. C:\Users\Public\Desktop), - set the File or folder value to the name of the file or folder (ex. Folder1),
- set the Detection method value to File or folder exists,
- set the Associated with a 32-bit app on 64-bit clients value to No.
- Press OK and go to next page
-
Apply your Win32 app to Groups of users or devices that you want the app to be deployed to.
-
Review your settings and save your app. Once saved, Intune will begin to push the files out to users as if it was any Win32 application.