エラーメッセージ
システムを再インストールした後、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"
}
}
}