Skip to main content

Add Wi-Fi Profile

Summary

This is a CW RMM implementation of the agnostic script Add-WifiProfile. The script can be used to manually add Wi-Fi profiles for Windows computers.

Requirement: PowerShell v5+

Sample Run

Sample Run 1

Sample Run 2

Sample Run 3

Dependencies

Add-WifiProfile

User Parameters

NameExampleAccepted ValuesRequiredDefaultTypeDescription
profileNameProValWifiTrueTextThe name of the WiFi profile to be created.
password123423e1c$$!#TrueTextThe password of the WiFi profile.
connectionModeautomanual, autofalseautoTextThe connection mode of the WiFi profile.
authenticationWPA2PSKopen, shared, WPA, WPAPSK, WPA2, WPA2PSK, WPA3SAE, WPA3ENT192, OWEfalseWPA2PSKTextThe authentication method used by the WiFi profile.
encryptionnonenone, WEP, TKIP, AES, GCMP256FalseAESTextThe encryption method used by the WiFi profile.
connectHiddenSSIDUnmarkedFalse$FalseFlagWhether to connect to the WiFi even if the SSID is hidden.
overwriteMarkedFalse$TrueFlagWhether to overwrite the WiFi profile if it already exists.

User Parameters

Task Creation

Create a new Script Editor style script in the system to implement this Task.

Task Creation Step 1

Task Creation Step 2

Name: Add Wi-Fi Profile
Description: The script can be used to manually add Wi-Fi profiles for Windows computers.
Requirement: PowerShell v5+
Category: Custom

Task Creation Step 3

Parameters

profileName:

Add a new parameter by clicking the Add Parameter button present at the top-right corner of the screen.

Add Parameter

This screen will appear.

Parameter Setup

  • Set profileName in the Parameter Name field.
  • Select Text String from the Parameter Type dropdown menu.
  • Enable the Required Field button.
  • Click the Save button.

Profile Name Save

connectionMode:

Add a new parameter by clicking the Add Parameter button present at the top-right corner of the screen.

Add Parameter

This screen will appear.

Parameter Setup

  • Set connectionMode in the Parameter Name field.
  • Select Text String from the Parameter Type dropdown menu.
  • Enable the Default Value button.
  • Set auto in the Value field.
  • Click the Save button.

Connection Mode Save

authentication:

Add a new parameter by clicking the Add Parameter button present at the top-right corner of the screen.

Add Parameter

This screen will appear.

Parameter Setup

  • Set authentication in the Parameter Name field.
  • Select Text String from the Parameter Type dropdown menu.
  • Enable the Default Value button.
  • Set WPA2PSK in the Value field.
  • Click the Save button.

Authentication Save

encryption:

Add a new parameter by clicking the Add Parameter button present at the top-right corner of the screen.

Add Parameter

This screen will appear.

Parameter Setup

  • Set encryption in the Parameter Name field.
  • Select Text String from the Parameter Type dropdown menu.
  • Enable the Default Value button.
  • Set AES in the Value field.
  • Click the Save button.

Encryption Save

password:

Add a new parameter by clicking the Add Parameter button present at the top-right corner of the screen.

Add Parameter

This screen will appear.

Parameter Setup

  • Set password in the Parameter Name field.
  • Select Text String from the Parameter Type dropdown menu.
  • Enable the Required Field button.
  • Click the Save button.

Password Save

connectHiddenSSID:

Add a new parameter by clicking the Add Parameter button present at the top-right corner of the screen.

Add Parameter

This screen will appear.

Parameter Setup

  • Set connectHiddenSSID in the Parameter Name field.
  • Select Flag from the Parameter Type dropdown menu.
  • Enable the Default Value button.
  • Set False in the Value field.
  • Click the Save button.

Hidden SSID Save

overwrite:

Add a new parameter by clicking the Add Parameter button present at the top-right corner of the screen.

Add Parameter

This screen will appear.

Parameter Setup

  • Set overwrite in the Parameter Name field.
  • Select Flag from the Parameter Type dropdown menu.
  • Enable the Default Value button.
  • Set True in the Value field.
  • Click the Save button.

Overwrite Save

Task

Navigate to the Script Editor Section and start by adding a row. You can do this by clicking the Add Row button at the bottom of the script page.

Add Row

A blank function will appear.

Blank Function

Row 1 Function: PowerShell Script

Search and select the PowerShell Script function.

PowerShell Script Selection

PowerShell Script Selected

The following function will pop up on the screen:

PowerShell Script Function

Paste in the following PowerShell script and set the Expected time of script execution in seconds to 300 seconds. Click the Save button.

[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingConvertToSecureStringWithPlainText', '')]
[CmdletBinding()]
# # Parameters and Globals
$profileName = '@profileName@'
if ( '@ConnectionMode@' -notin ( 'Manual', 'Auto' ) ) {
throw "ConnectionMode can either be 'Manual' or 'Auto'."
} else {
$ConnectionMode = '@ConnectionMode@'
}
if ( '@Authentication@' -notin ('open', 'shared', 'WPA', 'WPAPSK', 'WPA2', 'WPA2PSK', 'WPA3SAE', 'WPA3ENT192', 'OWE') ) {
throw "Authentication can either be 'open', 'shared', 'WPA', 'WPAPSK', 'WPA2', 'WPA2PSK', 'WPA3SAE', 'WPA3ENT192', 'OWE'."
} else {
$Authentication = '@Authentication@'
}
if ( '@Encryption@' -notin ('none', 'WEP', 'TKIP', 'AES', 'GCMP256') ) {
throw "Encryption can either be 'none', 'WEP', 'TKIP', 'AES', 'GCMP256'."
} else {
$Encryption = '@Encryption@'
}
$password = ConvertTo-SecureString '@Password@' -AsPlainText -Force
if ( '@connectHiddenSSID@' -match '1|Yes|True|Y') {
$connectHiddenSSID = $true
} else {
$connectHiddenSSID = $false
}
if ( '@overwrite@' -match '1|Yes|True|Y') {
$overwrite = $true
} else {
$overwrite = $false
}
$Parameters = @{
ProfileName = $profileName
ConnectionMode = $ConnectionMode
Authentication = $Authentication
Encryption = $Encryption
Password = $password
connectHiddenSSID = $connectHiddenSSID
overwrite = $overwrite
}
#region Setup - Variables
$ProjectName = 'Add-WifiProfile'
[Net.ServicePointManager]::SecurityProtocol = [enum]::ToObject([Net.SecurityProtocolType], 3072)
$BaseURL = 'https://file.provaltech.com/repo'
$PS1URL = "$BaseURL/script/$ProjectName.ps1"
$WorkingDirectory = "C:\ProgramData\_automation\script\$ProjectName"
$PS1Path = "$WorkingDirectory\$ProjectName.ps1"
$Workingpath = $WorkingDirectory
$LogPath = "$WorkingDirectory\$ProjectName-log.txt"
$ErrorLogPath = "$WorkingDirectory\$ProjectName-Error.txt"
#endregion
#region Setup - Folder Structure
New-Item -Path $WorkingDirectory -ItemType Directory -ErrorAction SilentlyContinue | Out-Null
$response = Invoke-WebRequest -Uri $PS1URL -UseBasicParsing
if (($response.StatusCode -ne 200) -and (!(Test-Path -Path $PS1Path))) {
throw "No pre-downloaded script exists and the script '$PS1URL' failed to download. Exiting."
} elseif ($response.StatusCode -eq 200) {
Remove-Item -Path $PS1Path -ErrorAction SilentlyContinue
[System.IO.File]::WriteAllLines($PS1Path, $response.Content)
}
if (!(Test-Path -Path $PS1Path)) {
throw 'An error occurred and the script was unable to be downloaded. Exiting.'
}
#endregion
#region Execution
if ($Parameters) {
& $PS1Path @Parameters
} else {
& $PS1Path
}
#endregion
if ( !(Test-Path $LogPath) ) {
throw 'PowerShell Failure. A Security application seems to have restricted the execution of the PowerShell Script.'
}
if ( Test-Path $ErrorLogPath ) {
$ErrorContent = ( Get-Content -Path $ErrorLogPath )
throw $ErrorContent
}
Get-Content -Path $LogPath

PowerShell Script Execution

Row 2 Function: Script Log

Add a new row by clicking the Add Row button.

Add Row

A blank function will appear.

Blank Function

Search and select the Script Log function.

Script Log Selection

Script Log Selected

The following function will pop up on the screen:

Script Log Function

In the script log message, simply type %output% and click the Save button.

Script Log Save

Click the Save button at the top-right corner of the screen to save the script.

Save Script

Completed Task

Completed Task

Output

  • Script Log