我正在尝试使用AgeStore删除一些过期的符号文件。我写了一个Powershell脚本,其中AgeStore命令有时可以工作,但并非总是如此。
例如,我的符号存储包含可追溯到2010年的符号文件。我想清除“过期”符号,因为它们不再需要。为此,我使用-date命令行参数指定“-date = 10-01-2010”。另外,我使用“-l”开关强制AgeStore
导致AgeStore不删除任何文件,只是列出所有文件 如果在没有的情况下运行相同的命令,将删除的文件 -l选项。
以下是运行脚本代码的片段......
$AgeStore = "$DebuggingToolsPath\AgeStore"
$asArgs = "`"$SymbolStorePath`" -date=$CutoffDate -s -y "
if ($WhatIf.IsPresent) { $asArgs += "-l" }
# determine size of the symbol store before delete operation.
Write-Verbose ">> Calculating current size of $SymbolStorePath before deletion.`n" -Verbose
">> $SymbolStorePath currently uses {0:0,0.00} GB`n" -f (((Get-ChildItem -R $SymbolStorePath | measure-object length -Sum ).Sum / 1GB))
Write-Verbose ">> Please wait...processing`n`n" -Verbose
& $AgeStore $asArgs
当上面的代码运行时,它返回以下输出...
处理10-01-2010 12:00 AM之前最后访问的所有文件
将删除0个字节
该程序' RemoveOldDebugSymbols.ps1:PowerShell脚本'退出了 代码为0(0x0)。
我已经验证符号存储中的符号文件的日期早于“10-01-2010”。我随后尝试使用不同的截止日期“11-01-2015”进行相同的实验,输出结果表明 已删除了多个文件,但不是那些来自2010年。我对可能导致差异的原因感到茫然。
是否有人尝试使用AgeStore从符号存储中删除符号文件?如果是这样,你有没遇到这个问题?你是怎么解决的?
答案 0 :(得分:0)
我尝试使用AgeStore解决这么多种不同的方法。为了推进项目,我决定重写脚本以使用带有删除事务的SymStore命令。基本上,我创建了一个应该删除的调试符号事务列表,并编写了一个遍历列表的循环,并一次删除一个条目。
希望这对遇到同样问题的人有所帮助。
编辑:每个请求....我无法发布整个脚本,但是,我在循环中使用以下代码作为AgeStore命令的替代。
$ssArgs = ".\symstore.exe del /i $SymbolEntryTransactionID /s `"$SymbolStorePath`""
Invoke-Expression $ssArgs