I am trying to write an automation script to remove calendar permissions on Exchange Online automatically using Powershell and Task Scheduler.
When I run the command, the permission is removed as expected, but when I create the task, I get an error that says "Missing argument in parameter list" and I am not sure why.
This is the entire script:
$Trigger= New-ScheduledTaskTrigger -Once -At "01/11/2023 10:00:00"
$User= "user-account"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-NoExit [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; $userName = '[email protected]'; $passwordText = Get-Content 'C:\Users\User\Secure.txt'; $securePwd = $passwordText | ConvertTo-SecureString; $credObject = New-Object System.Management.Automation.PSCredential -ArgumentList $userName, $securePwd; connect-exchangeonline -Credential $credObject; Remove-MailboxFolderPermission -Identity [email protected]:\Calendar -User [email protected] -Confirm:$false"
Register-ScheduledTask -TaskName "REMOVE-CONFIG" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
I have determined that the issue comes in here: -ArgumentList $userName, $securePwd. When the task runs the script, it does't recognise that there are these two $ variables in the command.
How do I get this script to execute correctly?
Any help will be appreciated!
Kind regards,
Dust
UPDATE This is my new command that still doesn't work however the command works if I manually create a task in task scheduler:
$Trigger= New-ScheduledTaskTrigger -Once -At "01/11/2023 19:00:00"
$User= "MYDOMAIN\User"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-NoExit -Command [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; Set-Variable -Name userName -Value '[email protected]'; Set-Variable -Name passwordText -Value (Get-Content C:\Users\User\Secure.txt); Set-Variable -Name securePwd -Value ($passwordText | ConvertTo-SecureString); Set-Variable -Name credObject -Value (New-Object System.Management.Automation.PSCredential -ArgumentList $userName, $securePwd); connect-exchangeonline -Credential $credObject; Remove-MailboxFolderPermission -Identity [email protected]:\Calendar -User [email protected] -Confirm:$false"
Register-ScheduledTask -TaskName "REMOVE-CONFIG" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force`