公司电脑安装了某个安全软件后,老是随机生产乱码文件夹,可恶的是本地管理员还没权限删除,需要SYSTEM帐号
幸运的是每个文件夹下都有个Sandbox文件夹,剩下的就是定位文件夹路径,改所有者,提权,删除啦
#文件夹所有者修改函数 function takeownfies { foreach ($f in $files){takeown.exe /f $f /a /r /d y} Start-Sleep 2 } #文件夹提权函数 function caclsfies { foreach ($f in $files){cacls.exe $f /t /e /c /g everyone:f} Start-Sleep 2 } #删除全部文件夹 function DELALLfies { foreach ($f in $files){CMD /C RD $f /S /Q} } #逐个删除文件夹 function DELfies { foreach ($f in $files){CMD /C RD $f /S} } #获取系统版本 $os=(cmd /c ver)[-1] $os #win 10执行这个 if ($os -match "10"){ #获取非系统磁盘 $volume=(Get-BitLockerVolume |Where-Object {$_.VolumeType -eq "Data" -and $_.mountpoint -like "*:"}).MountPoint $volume #获取各磁盘根目录文件夹路劲 $temp=(Get-ChildItem -Directory $volume).fullName #获取各文件夹中含有"Sandbox"的文件夹 $files=(($temp | Get-ChildItem -Directory |Where-Object {$_.name -eq "Sandbox"}).Parent).fullname } #win 7执行这个 if ($os -match "6.1"){ $volume="d:","e:","f:","g:","h:"|Where-Object {Test-Path $_} $volume #获取各磁盘中含有"Sandbox"的文件夹 $files=Get-ChildItem $volume -Recurse |Where-Object {$_.Mode -like "d*" -and $_.name -eq "Sandbox"} $temp = $files |ForEach-Object {$_.parent} $files=$temp |ForEach-Object {$_.fullname} } if ($files.Length -eq 0 -or $null -eq $files.Length ){ Write-Output "没有需要删除的文件夹,3秒后退出" Start-Sleep 3 exit } #执行所有者,提权函数 takeownfies caclsfies Clear-Host $files #执行删除函数 Write-Output "1.-删除全部文件夹" Write-Output "2.-逐个确认删除文件" $operate= Read-Host "选择需要的操作" switch ($operate){ 1 {DELALLfies ;break} 2 {DELfies ;break } default {break} }
win7真的好多命令,参数都不能支持,弄WIN7那块脑汁都给榨干了
学习学习。。不错不错
不太明白