PowerShellでファイルとパーミションをCSV出力する
# 共有ディレクトリのパスを設定
$FolderPath = "\\Path\To\Your\SharedFolder"
# 出力するテキストファイルのパス
$TxtOutputPath = "C:\Path\To\Output\Permissions.txt"
# テキストファイルが既に存在する場合は削除
If (Test-Path $TxtOutputPath) {
Remove-Item $TxtOutputPath
}
# 指定されたパスから始まるすべてのフォルダとファイルを再帰的に取得
$Items = Get-ChildItem -Path $FolderPath -Recurse
foreach ($Item in $Items) {
# アイテムのアクセス権情報を取得
$Acl = Get-Acl -Path $Item.FullName
foreach ($Access in $Acl.Access) {
# アクセス権情報をテキストファイルに直接書き込み
$line = "Path: $($Item.FullName), IdentityReference: $($Access.IdentityReference), AccessControlType: $($Access.AccessControlType), FileSystemRights: $($Access.FileSystemRights), IsInherited: $($Access.IsInherited)"
Add-Content -Path $TxtOutputPath -Value $line
}
}
Write-Host "Permissions export completed successfully to $TxtOutputPath"
C:\Scripts\Export-Permissions.ps1 にスクリプトを保存した場合、以下のコマンドを使用して実行します:
& "C:\Scripts\Export-Permissions.ps1"
スクリプトの実行前に、PowerShellでスクリプトの実行が許可されているか確認する必要があります。実行ポリシーを確認するには、PowerShellで以下のコマンドを実行します:
Get-ExecutionPolicy
もし実行ポリシーが Restricted に設定されている場合、スクリプトを実行できないため、RemoteSigned または Unrestricted に変更する必要があります(セキュリティ上のリスクを理解した上で変更してください)。実行ポリシーを変更するには、以下のコマンドを管理者権限で実行します:
Set-ExecutionPolicy RemoteSigned
このコマンド実行後は、上述の手順に従って.ps1ファイルを実行できるようになります。