This is the first script, so I then wanted to modify this so that I can write any errors in a text file to log it so can look into the log and see what is causing the issue, but when I run the below script it give me error shown below.
The uninstall worked fine with my script but it is showing as Error in Intune Overview
$forticlient = Get-WmiObject Win32_Product | Where-Object {$_.Name -like "*FortiClient*"}
msiexec /uninstall $forticlient.IdentifyingNumber /quiet /norestart
# Check for administrator rights
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Host "Please run this script as an administrator."
exit
}
# Define the name of the FortiClient executable
$fortiClientExecutable = "FortiSSLVPNClient.exe"
# Get the list of installed FortiClient versions
$fortiClientVersions = Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* -ErrorAction SilentlyContinue |
Where-Object { $_.DisplayName -like "FortiClient VPN*" } |
ForEach-Object { $_.DisplayName }
# Uninstall FortiClient versions
foreach ($version in $fortiClientVersions) {
$uninstallArgs = "/x $($_.PSChildName) /quiet /norestart"
Write-Host "Uninstalling $version with arguments: $uninstallArgs"
try {
# Attempt to uninstall FortiClient
Start-Process -FilePath "msiexec.exe" -ArgumentList $uninstallArgs -Wait -ErrorAction Stop
}
catch {
# Capture error details and write to a text file
$errorMessage = "Error uninstalling $version:`n$($_.Exception.Message)"
$errorFilePath = "C:\temp\ForticlientError.txt"
Add-Content -Path $errorFilePath -Value $errorMessage
Write-Host "Error details written to $errorFilePath"
}
}
Write-Host "FortiClient VPN Client uninstallation completed."
Get the following error - How can I fix it?
At line:26 char:45
-
$errorMessage = "Error uninstalling $version:`n$($_.Exception ...
-
~~~~~~~~~
Variable reference is not valid. ‘:’ was not followed by a valid variable name character. Consider using ${} to delimit the name.
+ CategoryInfo : ParserError: ( , ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvalidVariableReferenceWithDrive