指定文件夹修改所有者,提权,删除 2


公司电脑安装了某个安全软件后,老是随机生产乱码文件夹,可恶的是本地管理员还没权限删除,需要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那块脑汁都给榨干了


发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

2 条评论 “指定文件夹修改所有者,提权,删除