feat(windows): add recoverable existing-agent credential upgrade

This commit is contained in:
lussierj committed 2026-10-14 13:50:19 +00:00
1 parent 3cfb0d1abe
commit 97a0139e3d
25 files changed
+11122 -108

No files matched your search

@@ -0,0 +1,48 @@
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidateSet("NoExistingFunction", "ExistingFunction")]
[string]$Mode,
[Parameter(Mandatory = $true)][string]$SupportPath
)
$ErrorActionPreference = "Stop"
. $SupportPath
if ($Mode -ceq "NoExistingFunction") {
$before = Get-MinerOpsNativeGetItemState
if ([bool]$before.FunctionExisted) {
throw "Child process unexpectedly began with a global Get-Item function."
}
$observed = @(Invoke-MinerOpsNativeGetItemTrace -Action {
Get-Item -LiteralPath $SupportPath
})
if ($observed -cnotcontains $SupportPath) {
throw "Trace did not observe Get-Item."
}
Assert-MinerOpsNativeGetItemState -Expected $before `
-Context "no-preexisting-function child test"
return
}
$existing = { param($LiteralPath) "preexisting:$LiteralPath" }
Set-Item -LiteralPath "Function:\global:Get-Item" -Value $existing -Force
$before = Get-MinerOpsNativeGetItemState
$observed = @(Invoke-MinerOpsNativeGetItemTrace -Action {
Get-Item -LiteralPath $SupportPath
})
if ($observed -cnotcontains $SupportPath) {
throw "Trace did not observe Get-Item over an existing global function."
}
$after = Get-MinerOpsNativeGetItemState
Assert-MinerOpsNativeGetItemState -Expected $before `
-Context "preexisting-function child test"
if ($after.FunctionScriptBlock.ToString() -cne $existing.ToString()) {
throw "Existing Get-Item ScriptBlock was not restored exactly."
}
if (-not [object]::ReferenceEquals(
$after.FunctionScriptBlock,
$before.FunctionScriptBlock
)) {
throw "Existing Get-Item ScriptBlock instance changed."
}