Help!! Modify Script Remote Profile deleting

Hi All,

 

Hope you can help I have the below script that can delete profiles 1 by 1 looking to add an option to delete all profiles rather as an additional option could anyone help

#Prompt for a computer to connect to
$computer = Read-Host “Please enter a computer name”
#Test network connection before making connection
If ($computer -ne $Env:Computername) {
If (!(Test-Connection -comp $computer -count 1 -quiet)) {
Write-Warning “$computer is not accessible, please try a different computer or verify it is powered on.”
Break
}
}
Try {
# #Verify that the OS Version is 6.0 and above, otherwise the script will fail
# If ((Get-WmiObject -ComputerName $computer Win32_OperatingSystem -ea stop).Version -lt 6.0) {
# Write-Warning “The Operating System of the computer is not supported.nClient: Vista and abovenServer: Windows 2008 and above.”
# Break
# }
}
Catch {
Write-Warning “$($error[0])”
Break
}
Do {
#Gather all of the user profiles on computer
Try {
[array]$users = Get-WmiObject -ComputerName $computer Win32_UserProfile -filter “LocalPath Like ‘C:\\Users\\%’” -ea stop
}
Catch {
Write-Warning “$($error[0]) ”
Break
}
#Cache the number of users
$num_users = $users.count

Write-Host -ForegroundColor Green “User profiles on $($computer):”

#Begin iterating through all of the accounts to display
For ($i=0;$i -lt $num_users; $i++) {
Write-Host -ForegroundColor Green “$($i): $(($users[$i].localpath).replace(‘C:\Users\’,”))”
}
Write-Host -ForegroundColor Green “q: Quit”
#Prompt for user to select a profile to remove from computer
Do {
$account = Read-Host “Select a number to delete local profile or ‘q’ to quit”
#Find out if user selected to quit, otherwise answer is an integer
If ($account -NotLike “q*”) {
$account = $account -as [int]
}
}
#Ensure that the selection is a number and within the valid range
Until (($account -lt $num_users -AND $account -match “\d”) -OR $account -Like “q*”)
If ($account -Like “q*”) {
Break
}
Write-Host -ForegroundColor Yellow “Deleting profile: $(($users[$account].localpath).replace(‘C:\Users\’,”))”
#Remove the local profile
($users[$account]).Delete()
Write-Host -ForegroundColor Green “Profile: $(($users[$account].localpath).replace(‘C:\Users\’,”)) has been deleted”

#Configure yes choice
$yes = New-Object System.Management.Automation.Host.ChoiceDescription “&Yes”,”Remove another profile.”

#Configure no choice
$no = New-Object System.Management.Automation.Host.ChoiceDescription “&No”,”Quit profile removal”

#Determine Values for Choice
$choice = [System.Management.Automation.Host.ChoiceDescription[]] @($yes,$no)

#Determine Default Selection
[int]$default = 0

#Present choice option to user
$userchoice = $host.ui.PromptforChoice(“”,”Remove Another Profile?”,$choice,$default)
}
#If user selects No, then quit the script
Until ($userchoice -eq 1)

before reading the code, we would like to know the issue you are facing here :slight_smile:

Thanks for the response :slight_smile:

 

So I need a option to delete all profiles rather than selecting 1 by 1 cant seem to find any script that works with remote access that can do this

Have you tried to modify your script? Looks like you can just remove all the user prompt lines/loops (most of your script) and put line 55-56 in a simple foreach loop.

Provided a basic answer in your other post:

https://powershell.org/forums/topic/deleting-profiles-remotely/