公司安全策略调整,机械师 mini最终还是搬迁回家作为备用服务器,顺带重装机器系统,ubuntu 切换到了windows server,由于激活的手段不正规,自己家里用,好像不激活也没事

非常规方式激活,触发了微软的检测(正常运行了半个月),服务器开机一小时,自动关机,翻了一圈系统日志,才发现是盗版导致的。

没辙,再次重装系统,SqlServer也面临重装,每次弄都比较蛋疼,文件权限管控严格,导致无法正常附加数据库。

报错信息

系统重装以后,SqlServer在附加数据库中可能会出现5120,操作系统错误拒绝访问。

处理脚本

前文链接:批量更新本地Git仓库,没错又是这个熟悉的脚本,改造一下,我们遍历文件夹的同时修改文件的权限,当前用于拥有完全编辑的权限。

网上的教程大部分都是让你手动修改,他们每次只需要修改几个文件吗?我每次都需要处理一批文件,全部手动处理,人会自闭的。

$currentUserName = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$rootDirectory = "D:\data\2013_RujiaInfo"

Get-ChildItem -Path $rootDirectory -Recurse | ForEach-Object {
    $itemPath = $_.FullName

    if ($_ -is [System.IO.DirectoryInfo]) {
        $icaclsResult = icacls $itemPath /setowner "$currentUserName" 2>&1
        if ($LASTEXITCODE -eq 0) {
            Write-Host "已更改文件夹 $itemPath 的所有者为 $currentUserName"
            # 授予当前用户写入权限
            Invoke-Expression "icacls `"$itemPath`" /grant `"$($currentUserName):(OI)(CI)F`""
            Write-Host "已授予 $currentUserName 编辑文件夹的权限"
        } else {
            Write-Host "无法更改文件夹 $itemPath 的所有者。错误信息: $icaclsResult"
        }
    } else {
        $takeownResult = icacls $itemPath /setowner "$currentUserName" 2>&1
        if ($LASTEXITCODE -eq 0) {
            # 授予当前用户写入权限
            Invoke-Expression "icacls `"$itemPath`" /grant `"$($currentUserName):(F)`""
            Write-Host "已授予 $currentUserName 编辑文件的权限"
        } else {
            Write-Host "无法更改文件 $itemPath 的所有者。错误信息: $takeownResult"
        }
    }
}