Skip to content

Unable to update: Operation is not valid due to the current state of the object #29386

@jaraco

Description

@jaraco

Description

I was prompted to upgrade my Az modules.

WARNING: You're using Az version 14.1.0. The latest version of Az is 15.5.0. Upgrade your Az modules using the following commands:
  Update-PSResource Az -WhatIf    -- Simulate updating your Az modules.
  Update-PSResource Az            -- Update your Az modules.
There will be breaking changes from 14.1.0 to 15.5.0. Open https://go.microsoft.com/fwlink/?linkid=2241373 and check the details.

I tried to update the Az modules, but it failed with:

Update-PSResource: Unable to successfully install package 'Az.LogicApp': 'Cannot remove package path C:\Users\jaraco\OneDrive - Microsoft\Documents\PowerShell\Modules\Az.LogicApp\1.6.0. The previous package contents have been restored.'
Update-PSResource: Operation is not valid due to the current state of the object. Update-PSResource: Package(s) 'Az' could not be installed from repository 'PSGallery'.

I ran again and got the same error about a different package.

I sicced Copilot on it and it eventually managed to get it to update, but only after an hour of struggling and only by manually deleting the existing modules.

Details

🤖 Copilot CLI Session

[!NOTE]

  • Session ID: 583b8ef4-2688-4abf-bf09-05780e6b4261
  • Started: 4/9/2026, 3:05:33 PM
  • Duration: 65m 50s
  • Exported: 4/9/2026, 4:11:24 PM

⏱️ 3s

ℹ️ Info

Detected Azure DevOps repository. GitHub MCP server has been disabled. Use /mcp enable github-mcp-server to re-enable.


⏱️ 3s

⚠️ Warning

Failed to load 2 skills. Run /skills for more details.


⏱️ 14s

⚠️ Warning

MCP server 'ado' is taking longer than expected to connect.


⏱️ 14s

⚠️ Warning

MCP server 'kusto' is taking longer than expected to connect.


⏱️ 14s

⚠️ Warning

MCP server 'enghub' is taking longer than expected to connect.


⏱️ 14s

⚠️ Warning

MCP server 'playwright' is taking longer than expected to connect.


⏱️ 14s

⚠️ Warning

MCP server 'ev2' is taking longer than expected to connect.


⏱️ 14s

⚠️ Warning

MCP server 'workiq' is taking longer than expected to connect.


⏱️ 59s

👤 User

I keep trying to update Az PowerShell, but I keep getting failures. How to remedy?

Update-PSResource Az

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its Trusted value by running the
Set-PSResourceRepository cmdlet. Are you sure you want to install the PSResource from 'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A
Update-PSResource: Unable to successfully install package 'Az.LogicApp': 'Cannot remove package path C:\Users\jaraco\OneDrive - Microsoft\Documents\PowerShell\Modules\Az.LogicApp\1.6.0. The previous package contents have been restored.'
Update-PSResource: Operation is not valid due to the current state of the object.
Update-PSResource: Package(s) 'Az' could not be installed from repository 'PSGallery'.
update-psresource az

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its Trusted value by running the
Set-PSResourceRepository cmdlet. Are you sure you want to install the PSResource from 'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A
Update-PSResource: Unable to successfully install package 'Az.MachineLearning': 'Cannot remove package path C:\Users\jaraco\OneDrive - Microsoft\Documents\PowerShell\Modules\Az.MachineLearning\1.2.0. The previous package contents have been restored.'
Update-PSResource: Operation is not valid due to the current state of the object.
Update-PSResource: Package(s) 'Az' could not be installed from repository 'PSGallery'.


⏱️ 57s

ℹ️ Info

Environment loaded: 3 custom instructions, 9 MCP servers, 11 skills, 3 agents


⏱️ 1m 4s

💭 Reasoning

*The user is having trouble updating the Az PowerShell module. The error messages show two key issues:

  1. The modules are installed in a OneDrive-synced path (C:\Users\jaraco\OneDrive - Microsoft\Documents\PowerShell\Modules\)
  2. OneDrive file locking is preventing the removal/replacement of old module files during the update

This is a well-known issue - OneDrive locks files and prevents PowerShell from deleting/replacing module folders during updates.

The remedy is straightforward - I can explain without needing to run tools.*


⏱️ 1m 8s

💬 Copilot

The problem is OneDrive file locking. Your modules are installed under:

C:\Users\jaraco\OneDrive - Microsoft\Documents\PowerShell\Modules\

OneDrive syncs and locks those files, preventing PowerShell from removing old versions during the update.

Remedies (pick one):

  1. Pause OneDrive sync before updating:

    • Right-click OneDrive tray icon → Pause syncing → run Update-PSResource Az → resume sync.
  2. Move your module path out of OneDrive by setting $env:PSModulePath to a non-OneDrive location, or install with -Scope AllUsers (requires admin):

    Update-PSResource Az -Scope AllUsers
  3. Close all PowerShell sessions except one (other sessions may hold file locks on loaded modules), pause OneDrive, then retry.

Also, to skip the trust prompt each time:

Set-PSResourceRepository -Name PSGallery -Trusted

⏱️ 2m 16s

👤 User

Let's do 1. Can you first enact the trust. Then, if possible, show me how to pause one drive on the CLI. Thanks.


⏱️ 2m 19s

💭 Reasoning

*The user wants me to:

  1. Set PSGallery as trusted
  2. Show how to pause OneDrive from the CLI

Let me do both.*


⏱️ 2m 32s

powershell

Set PSGallery as trusted repository

Arguments
{
  "command": "Set-PSResourceRepository -Name PSGallery -Trusted; Get-PSResourceRepository PSGallery",
  "description": "Set PSGallery as trusted repository",
  "initial_wait": 10
}
Name      Uri                                      Trusted Priority IsAllowedByPolicy
----      ---                                      ------- -------- -----------------
PSGallery https://www.powershellgallery.com/api/v2 True    50       True
<exited with exit code 0>

⏱️ 2m 35s

💬 Copilot

✅ PSGallery is now trusted — no more prompts.

Pausing OneDrive from CLI — unfortunately there's no official CLI command for it. The closest approach:

# Stop OneDrive (effectively pauses sync)
Stop-Process -Name OneDrive

# Later, restart it
Start-Process "$env:LOCALAPPDATA\Microsoft\OneDrive\OneDrive.exe"

> ⚠️ This fully kills OneDrive rather than a graceful pause. The tray icon right-click → Pause syncing is cleaner, but there's no CLI equivalent.

Would you like me to stop OneDrive, run the Az update, then restart it?


⏱️ 2m 48s

👤 User

Yes


⏱️ 2m 54s

powershell

Stop OneDrive and update Az module

Arguments
{
  "command": "Stop-Process -Name OneDrive -ErrorAction SilentlyContinue; Start-Sleep -Seconds 2; Write-Host \"OneDrive stopped. Starting Az update...\"; Update-PSResource Az",
  "description": "Stop OneDrive and update Az module",
  "initial_wait": 120
}
Command not executed. The 'Stop-Process -Name' command is not allowed. Use 'Stop-Process -Id <PID>' with a specific process ID instead.

⏱️ 3m 0s

powershell

Find OneDrive process ID

Arguments
{
  "command": "Get-Process -Name OneDrive -ErrorAction SilentlyContinue | Select-Object Id, ProcessName",
  "description": "Find OneDrive process ID",
  "initial_wait": 10
}
Id ProcessName
   -- -----------
24460 OneDrive
<exited with exit code 0>

⏱️ 5m 9s

powershell

Stop OneDrive and update Az module

Arguments
{
  "command": "Stop-Process -Id 24460; Start-Sleep -Seconds 2; Write-Host \"OneDrive stopped. Starting Az update...\"; Update-PSResource Az",
  "description": "Stop OneDrive and update Az module",
  "initial_wait": 120
}
OneDrive stopped. Starting Az update...
<command with shellId: 2 is still running after 120 seconds. The command is still running. Check the output above - if it looks like the command is waiting for input, use write_powershell to provide it. Otherwise, use read_powershell to continue waiting for output, or stop_powershell to stop it.>

⏱️ 5m 13s

💬 Copilot

Update is running — this can take a while since Az has many sub-modules. Waiting for it to finish...


⏱️ 5m 45s

read_powershell

Waiting up to 120 seconds for command output

Arguments
{
  "shellId": "2",
  "delay": 120
}
17 lines
OneDrive stopped. Starting Az update...
Update-PSResource: 
Line |
   2 |  … -Host "OneDrive stopped. Starting Az update..."; Update-PSResource Az
     |                                                     ~~~~~~~~~~~~~~~~~~~~
     | Unable to successfully install package 'Az.Security': 'Cannot remove package path C:\Users\jaraco\OneDrive - Microsoft\Documents\PowerShell\Modules\Az.Security\1.8.0. The previous package contents have been restored.'
Update-PSResource: 
Line |
   2 |  … -Host "OneDrive stopped. Starting Az update..."; Update-PSResource Az
     |                                                     ~~~~~~~~~~~~~~~~~~~~
     | Operation is not valid due to the current state of the object.
Update-PSResource: 
Line |
   2 |  … -Host "OneDrive stopped. Starting Az update..."; Update-PSResource Az
     |                                                     ~~~~~~~~~~~~~~~~~~~~
     | Package(s) 'Az' could not be installed from repository 'PSGallery'.
<command with id: 2 exited with exit code 0>

⏱️ 5m 45s

ℹ️ Notification

Shell "Stop OneDrive and update Az module" completed


⏱️ 5m 49s

💬 Copilot

Still failing — OneDrive likely left file locks even after the process stopped. Let me check if OneDrive is truly gone and try manually removing the problematic folder first.


⏱️ 5m 52s

powershell

Check if OneDrive is still running

Arguments
{
  "command": "Get-Process -Name OneDrive -ErrorAction SilentlyContinue | Select-Object Id, ProcessName",
  "description": "Check if OneDrive is still running",
  "initial_wait": 10
}

<exited with exit code 0>

⏱️ 18m 20s

powershell

Try removing the locked module folder

Arguments
{
  "command": "Remove-Item \"C:\\Users\\jaraco\\OneDrive - Microsoft\\Documents\\PowerShell\\Modules\\Az.Security\\1.8.0\" -Recurse -Force -ErrorAction Stop",
  "description": "Try removing the locked module folder",
  "initial_wait": 15
}
Removed 1 of 47 files [640.6 KB of 7.9 MB (0.0 MB/s)                                                                 ]
<exited with exit code 0>

⏱️ 18m 26s

💬 Copilot

That worked. The issue was likely residual file locks that took a moment to release. Let me also clean the other previously-failed modules, then retry the update.


⏱️ 22m 19s

powershell

Clean failed modules and retry Az update

Arguments
{
  "command": "$basePath = \"C:\\Users\\jaraco\\OneDrive - Microsoft\\Documents\\PowerShell\\Modules\"\n# Clean the other two modules that failed earlier\n$failed = @(\"Az.LogicApp\\1.6.0\", \"Az.MachineLearning\\1.2.0\")\nforeach ($m in $failed) {\n    $p = Join-Path $basePath $m\n    if (Test-Path $p) { Remove-Item $p -Recurse -Force -ErrorAction SilentlyContinue; Write-Host \"Removed $m\" }\n    else { Write-Host \"$m already gone\" }\n}\nWrite-Host \"Starting Az update...\"\nUpdate-PSResource Az",
  "description": "Clean failed modules and retry Az update",
  "initial_wait": 180
}
19 lines
Removed Az.LogicApp\1.6.0
Removed Az.MachineLearning\1.2.0
Starting Az update...
Update-PSResource: 
Line |
  11 |  Update-PSResource Az
     |  ~~~~~~~~~~~~~~~~~~~~
     | Unable to successfully install package 'Az.DataTransfer': 'Cannot remove package path C:\Users\jaraco\OneDrive - Microsoft\Documents\PowerShell\Modules\Az.DataTransfer\1.0.0. The previous package contents have been restored.'
Update-PSResource: 
Line |
  11 |  Update-PSResource Az
     |  ~~~~~~~~~~~~~~~~~~~~
     | Operation is not valid due to the current state of the object.
Update-PSResource: 
Line |
  11 |  Update-PSResource Az
     |  ~~~~~~~~~~~~~~~~~~~~
     | Package(s) 'Az' could not be installed from repository 'PSGallery'.
<exited with exit code 0>

⏱️ 22m 23s

💭 Reasoning

*It keeps failing on different modules each time. The approach of fixing one at a time is a whack-a-mole game. The root issue is that the modules are installed in a OneDrive-synced folder, and even with OneDrive stopped, there are lingering issues with file removal in that path.

A better approach would be to:

  1. Uninstall Az completely from the OneDrive path
  2. Reinstall to AllUsers scope or a non-OneDrive path

Or alternatively, just keep retrying - each time it clears one more module. But that's tedious.

Let me try a different approach - remove ALL old Az.* module folders first, then do the update. Or better yet, install with -Scope AllUsers to avoid the OneDrive path entirely.*


⏱️ 22m 29s

💬 Copilot

It's a whack-a-mole — each run fails on a different sub-module. Let me take a different approach: remove all old Az.* module versions at once, then reinstall cleanly.


⏱️ 23m 58s

powershell

Bulk remove all old Az modules

Arguments
{
  "command": "$basePath = \"C:\\Users\\jaraco\\OneDrive - Microsoft\\Documents\\PowerShell\\Modules\"\n$azModules = Get-ChildItem $basePath -Directory -Filter \"Az.*\" -ErrorAction SilentlyContinue\nWrite-Host \"Found $($azModules.Count) Az modules to clean\"\n$errors = 0\nforeach ($mod in $azModules) {\n    try {\n        Remove-Item $mod.FullName -Recurse -Force -ErrorAction Stop\n        Write-Host \"Removed $($mod.Name)\"\n    } catch {\n        $errors++\n        Write-Host \"FAILED: $($mod.Name) - $_\"\n    }\n}\n# Also remove the Az meta-module itself\n$azMeta = Join-Path $basePath \"Az\"\nif (Test-Path $azMeta) { Remove-Item $azMeta -Recurse -Force -ErrorAction SilentlyContinue; Write-Host \"Removed Az\" }\nWrite-Host \"`nDone. Errors: $errors\"",
  "description": "Bulk remove all old Az modules",
  "initial_wait": 60
}
8 lines
Found 95 Az modules to clean
Removed 1 of 7 files [30.9 KB of 437.8 KB (0.0 MB/s)                                                                 ]Removed Az
Removed 85 of 149 files [30.4 MB of 57.5 MB (155.9 MB/s)                                                             ]Removed Az.Accounts
Removed 29 of 33 files [2.8 MB of 2.9 MB (23.3 MB/s)                                                                 ]Removed Az.Advisor
Removed Az.Aks
Removed Az.AnalysisServices
Removed 41 of 40 files [
<command with shellId: 6 is still running after 60 seconds. The command is still running. Check the output above - if it looks like the command is waiting for input, use write_powershell to provide it. Otherwise, use read_powershell to continue waiting for output, or stop_powershell to stop it.>

⏱️ 25m 2s

read_powershell

Waiting up to 60 seconds for command output

Arguments
{
  "delay": 60,
  "shellId": "6"
}
8 lines
Found 95 Az modules to clean
Removed 1 of 7 files [30.9 KB of 437.8 KB (0.0 MB/s)                                                                 ]Removed Az
Removed 85 of 149 files [30.4 MB of 57.5 MB (155.9 MB/s)                                                             ]Removed Az.Accounts
Removed 29 of 33 files [2.8 MB of 2.9 MB (23.3 MB/s)                                                                 ]Removed Az.Advisor
Removed Az.Aks
Removed Az.AnalysisServices
Removed 41 of 40 files [
<command with shellId: 6 is still running after 60 seconds. The command is still running. Check the output above - if it looks like the command is waiting for input, use write_powershell to provide it. Otherwise, use read_powershell to continue waiting for output, or stop_powershell to stop it.>

⏱️ 27m 8s

read_powershell

Waiting up to 120 seconds for command output

Arguments
{
  "delay": 120,
  "shellId": "6"
}
8 lines
Found 95 Az modules to clean
Removed 1 of 7 files [30.9 KB of 437.8 KB (0.0 MB/s)                                                                 ]Removed Az
Removed 85 of 149 files [30.4 MB of 57.5 MB (155.9 MB/s)                                                             ]Removed Az.Accounts
Removed 29 of 33 files [2.8 MB of 2.9 MB (23.3 MB/s)                                                                 ]Removed Az.Advisor
Removed Az.Aks
Removed Az.AnalysisServices
Removed 41 of 40 files [
<command with shellId: 6 is still running after 120 seconds. The command is still running. Check the output above - if it looks like the command is waiting for input, use write_powershell to provide it. Otherwise, use read_powershell to continue waiting for output, or stop_powershell to stop it.>

⏱️ 27m 11s

💭 Reasoning

The removal seems to be stuck, likely OneDrive files are being recalled from the cloud or there's something else going on. Let me wait more or try a different approach. Let me wait a bit longer.


⏱️ 27m 12s

💬 Copilot

The deletions are slow — OneDrive cloud-tiered files need to be recalled before deletion. Let me keep waiting...


⏱️ 32m 13s

read_powershell

Waiting up to 300 seconds for command output

Arguments
{
  "delay": 300,
  "shellId": "6"
}
8 lines
Found 95 Az modules to clean
Removed 1 of 7 files [30.9 KB of 437.8 KB (0.0 MB/s)                                                                 ]Removed Az
Removed 85 of 149 files [30.4 MB of 57.5 MB (155.9 MB/s)                                                             ]Removed Az.Accounts
Removed 29 of 33 files [2.8 MB of 2.9 MB (23.3 MB/s)                                                                 ]Removed Az.Advisor
Removed Az.Aks
Removed Az.AnalysisServices
Removed 41 of 40 files [
<command with shellId: 6 is still running after 300 seconds. The command is still running. Check the output above - if it looks like the command is waiting for input, use write_powershell to provide it. Otherwise, use read_powershell to continue waiting for output, or stop_powershell to stop it.>

⏱️ 32m 17s

💭 Reasoning

*This is stuck. The OneDrive files are cloud-tiered and need to be downloaded before they can be deleted. This is going to take a very long time. Let me stop this and take a completely different approach.

The better approach is to just install Az to AllUsers scope (which goes to C:\Program Files\PowerShell\Modules instead of the OneDrive path), or install fresh to a non-OneDrive path.

Let me stop this and suggest a cleaner approach.*


⏱️ 32m 19s

💬 Copilot

This is stuck on cloud-tiered file recalls. Let me stop this and take a cleaner approach.


⏱️ 32m 20s

stop_powershell

Arguments
{
  "shellId": "6"
}
<command with id: 6 stopped>

⏱️ 38m 27s

ask_user

The OneDrive-synced folder is fighting us — even with One...

Arguments
{
  "question": "The OneDrive-synced folder is fighting us — even with OneDrive stopped, cloud-tiered files need recall before deletion, which is extremely slow. A much cleaner fix is to install Az to the **AllUsers** scope (`C:\\Program Files\\PowerShell\\Modules`) which bypasses OneDrive entirely. This requires an elevated (admin) PowerShell. Can I try that instead?",
  "choices": [
    "Yes, install to AllUsers scope (Recommended)",
    "No, keep trying with the OneDrive path"
  ]
}
User selected: No, keep trying with the OneDrive path

⏱️ 38m 31s

💭 Reasoning

*The user wants to keep trying with the OneDrive path. Let me think of a better approach for this.

The issue is that OneDrive cloud-tiered files are slow to delete. One approach is to use attrib to remove the cloud-tiered attribute, or use a different deletion method.

Actually, let me think about this differently. The user could:

  1. Run Update-PSResource Az repeatedly - each time it might get past a different module

  2. Try using -SkipDependencyCheck or other flags

  3. Try deleting with robocopy which can be faster for mass deletion

  4. Set the files to "Always keep on this device" first

  5. Or just reinstall with the -Reinstall flag to overwrite the problematic modules

The real long-term solution though is to move the PowerShell module path away from OneDrive entirely—either by changing where Documents points or by configuring a separate modules folder outside of cloud sync. Using robocopy could also quickly clear out the existing folders if needed.*


⏱️ 38m 43s

💬 Copilot

OK, let's work around OneDrive. Let me try a loop approach — each run should progress past previously-failing modules. First, let me clean the specific blocker and retry.


⏱️ 38m 47s

powershell

Check remaining Az modules

Arguments
{
  "command": "$basePath = \"C:\\Users\\jaraco\\OneDrive - Microsoft\\Documents\\PowerShell\\Modules\"\n# Check what Az modules remain\n$remaining = Get-ChildItem $basePath -Directory -Filter \"Az.*\" -ErrorAction SilentlyContinue\nWrite-Host \"$($remaining.Count) Az.* modules remaining\"",
  "description": "Check remaining Az modules",
  "initial_wait": 15
}
0 Az.* modules remaining
<exited with exit code 0>

⏱️ 38m 49s

💭 Reasoning

Oh interesting - the bulk removal actually did clear everything, it was just slow to report. Now there are 0 Az. modules left. Let's try the install now. Since they're all gone, we should do Install-PSResource Az instead of Update-PSResource Az.*


⏱️ 38m 51s

💬 Copilot

The earlier cleanup actually succeeded — all old Az modules are gone! Let me do a fresh install now.


⏱️ 41m 1s

powershell

Fresh install of Az module

Arguments
{
  "command": "Install-PSResource Az",
  "description": "Fresh install of Az module",
  "initial_wait": 300
}

<exited with exit code 0>

⏱️ 41m 45s

powershell

Verify Az installed and restart OneDrive

Arguments
{
  "command": "Get-InstalledPSResource Az | Select-Object Name, Version; Start-Process \"$env:LOCALAPPDATA\\Microsoft\\OneDrive\\OneDrive.exe\"; Write-Host \"OneDrive restarted.\"",
  "description": "Verify Az installed and restart OneDrive",
  "initial_wait": 15
}
OneDrive restarted.
Name Version
---- -------
Az   15.5.0
<exited with exit code 0>

⏱️ 41m 49s

💬 Copilot

Done! Az 15.5.0 installed successfully, and OneDrive has been restarted.

The earlier bulk cleanup worked (just slow to report due to cloud-tiered file recalls), so the fresh install went through cleanly.


⏱️ 60m 16s

ℹ️ Info

Copied last response to clipboard.


⏱️ 64m 46s

ℹ️ Info

Copied last response to clipboard.


Generated by GitHub Copilot CLI

I'm not even sure it succeeded.

It was tempted to abandon the existing install and abandon best practices and install system-wide, leaving the old version to linger in my OneDrive (and presumably other machines).

It would be nice if there was a reliable way to upgrade Az PowerShell, even if it's installed user-local. It wasn't my decision for PowerShell to put these modules in the OneDrive, though I did advise against it very early in the product offering. Now that it's established that way, we'd do best to help our customers deal with the challenges this design brings.

Issue script & Debug output

n/a

Environment data

Name                           Value
----                           -----
PSVersion                      7.5.5
PSEdition                      Core
GitCommitId                    7.5.5
OS                             Microsoft Windows 10.0.26200
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Module versions

Get-Module Az*

ModuleType Version    PreRelease Name                                ExportedCommands
---------- -------    ---------- ----                                ----------------
Script     5.3.4                 Az.Accounts                         {Add-AzEnvironment, Clear-AzConfig, Clear-AzContext, Clear-AzDefault…}

Error output

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugThis issue requires a change to an existing behavior in the product in order to be resolved.customer-reported

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions