| |
| $logDir = 'C:\Users\ContainerAdministrator\AppData\Roaming\Tencent\WXWork\Log' |
| $tmpDir = 'C:\Users\ContainerAdministrator\AppData\Local\Temp\Tencent' |
| docker ps --filter label=gnproxy -q | ForEach-Object { docker exec $_ powershell -Command "echo $_; Get-ChildItem -Path $($logDir) -Include *.log,*.txt,*.dmp -Recurse | Remove-Item -Force -ErrorAction SilentlyContinue; Get-ChildItem -Path $($logDir) -Filter *.log -Recurse | ForEach-Object { Clear-Content -Path $_.FullName -ErrorAction SilentlyContinue };Get-ChildItem -Path $($tmpDir) -Include *.log,*.txt,*.dmp -Recurse -ErrorAction SilentlyContinue | Remove-Item -Force -ErrorAction SilentlyContinue; Get-PSDrive 'c'" } |
| |
| # 批量查看 |
| docker ps --filter label=gnproxy -q | ForEach-Object { docker exec $_ powershell -Command "echo $_; Get-PSDrive 'c'; " } |
| |
| # 删除 wxwork 生成的 dump 文件 |
| docker exec f56e197d09 powershell -Command "Get-PSDrive; Remove-Item -Path 'C:\Users\ContainerAdministrator\AppData\Local\Temp\Tencent' -Recurse -Force -ErrorAction SilentlyContinue; Get-PSDrive" |
| |
| |
| function ConvertTo-ReadableSize { |
| param ( |
| [long]$size |
| ) |
| $sizes = "Bytes", "KB", "MB", "GB", "TB" |
| $index = 0 |
| while ($size -gt 1kb -and $index -lt $sizes.Length - 1) { |
| $size /= 1kb |
| $index++ |
| } |
| return "{0:N2} {1}" -f $size, $sizes[$index] |
| } |
| |
| function CountDirSize { |
| param ( |
| $directoryPath, |
| $name, |
| $deep |
| ) |
| |
| $files = Get-ChildItem -Path $directoryPath -Recurse -File |
| $totalSize = ($files | Measure-Object -Property Length -Sum).Sum |
| |
| |
| if($totalSize -lt 10mb){ |
| return |
| } |
| |
| $spear = " " * $deep |
| |
| |
| |
| |
| $readableSize = ConvertTo-ReadableSize -size $totalSize |
| $spear = " " * $deep |
| Write-Output " $spear - $($name): $readableSize。" |
| } |
| |
| function CountSubDirSize { |
| param ( |
| $directoryPath, |
| $name, |
| $deep |
| ) |
| |
| if ($deep -gt 4) { |
| return |
| } |
| |
| CountDirSize -directoryPath $directoryPath -name $name -deep $deep |
| $subDirs = Get-ChildItem -Path $directoryPath -Directory |
| foreach ($subDir in $subDirs) { |
| CountSubDirSize -directoryPath $subDir.FullName -name $subDir.Name -deep ($deep + 1) |
| } |
| } |
| |
| CountSubDirSize -name "根目录" -directoryPath "C:\users\" |
| |
| 1. 运行 GnCleaner |
| 2. 运行 Find-OrphanDockerLayers |
| 3. 删除 D:\gnlab\gnapi\files 目录下三个子目录中旧日期的文件 |
| 4. 删除最近的日志文件 |
| docker system prune -a 包括未使用的镜像 |
| 或 |
| docker system prune 包括未引用的镜像 |
| |
| Write-Output '删除已关闭容器的企业微信文件夹' |
| |
| $root = "D:\gnlab\gnproxy" |
| $url = "http://127.0.0.1/gnapi/Test/GetOnlineWxs" |
| |
| $response = Invoke-WebRequest -Uri $url |
| $json = $response.Content | ConvertFrom-Json |
| |
| $guidHash = @{} |
| $json.data.data | ForEach-Object Guid | % {$guidHash.Add($_, $true)} |
| |
| Get-ChildItem -Path $root -Directory | ForEach-Object { |
| $guid = $_.Name |
| if ($guidHash.ContainsKey($guid)) { |
| |
| } else { |
| |
| |
| $fullPath = Join-Path $root -ChildPath $guid |
| Write-Output "删除文件夹:$fullPath" |
| |
| Remove-Item -Path $fullPath -Recurse |
| |
| |
| |
| } |
| } |
| 容器标签 |
| (docker inspect c324ae698681 | ConvertFrom-Json )[0].config.Labels |
| |
| Get-PSDrive |
| |
| |
| Get-ChildItem -Recurse -ErrorAction SilentlyContinue | Measure-Object -Sum Length |
| |
| Get-ChildItem -Recurse -ErrorAction SilentlyContinue | Measure-Object -Sum Length | Select-Object @{Name='TotalSize (GB)'; Expression={$_.Sum / 1GB -as [int]}} |
| |
| |
| [array]$ContainerDetails = docker ps -a -q | ForEach { docker inspect $_ | ConvertFrom-Json} |
| ForEach ($Container in $ContainerDetails) { |
| |
| $id = $Container.Id |
| $size = 0 |
| echo $id |
| ForEach($ContainerLayer in $Container.GraphDriver.Data.dir){ |
| |
| $size = (Get-ChildItem "$ContainerLayer\sandbox.vhdx").Length / 1Gb |
| echo $size |
| |
| |
| |
| |
| } |
| } |
| |
| # 看附件 replaceReporter.7z |
| |
| # 列出文件的真实路径 |
| # docker exec f46423f8d283 powershell -Command 'Get-ChildItem TxBugReport* -Path c:\gnlab\wxwork -Recurse | Select-Object FullName | Format-Table -HideTableHeaders -Wrap' |
| |
| # 列出最近的 n 条数据 |
| $dockerIds = docker ps -n 6 -q |
| |
| $dockerPaths = @() |
| $dockerPaths += 'C:\gnlab\WXWork\4.1.22.6014\TxBugReport.exe' |
| $dockerPaths += 'C:\gnlab\WXWork\4.1.22.6014\FlutterPlugins\TxBugReport.exe' |
| $dockerPaths += 'C:\gnlab\WXWork\4.1.22.6014\wemail\TxBugReport.exe' |
| $dockerPaths += 'C:\gnlab\WXWork\4.1.22.6014\WeMeet\3.10.5.636\TxBugReport.exe' |
| $dockerPaths += 'C:\gnlab\WXWork\4.1.22.6014\compatible_web\WXWorkWeb.exe' |
| |
| $desktop = [system.Environment]::GetFolderPath('Desktop') |
| $sleepPath = Join-Path $desktop -ChildPath 'Sleep10.exe' |
| |
| if (-not [System.IO.File]::Exists($sleepPath)) |
| { |
| throw [System.IO.FileNotFoundException]::new('请在桌面上准备 sleep10.exe 文件 ') |
| } |
| |
| foreach ($dockerPath in $dockerPaths) { |
| |
| $length = $dockerIds.Length |
| $dockerIds | % { echo $_; $length -= 1; echo $length; docker cp $sleepPath "$($_):$($dockerPath)" } |
| } |
处理 windows 容器中使用 windowsfilter 目录
https://gist.github.com/olljanat/340b4033eb24d8d33ec75f2c3c3b6b3d
https://dotpeekser.de/posts/how-to-remove-orphan-layers-in-docker-for-windows
https://geek-docs.com/docker/docker-tutorials/t_how-to-find-the-layers-and-layer-sizes-for-each-docker-image.html
GnCleaner
auto_clear_docker
replaceReporter
原文件_Find-OrphanDockerLayers