Этот сценарий был разработан, чтобы значительно упростить применение разрешений на новом сервере. В настоящее время он этого не делает :(
По какой-то причине он отлично работает на моей машине с Win 8, где я это сделал. Когда я запускаю его на целевой машине, сервере 2008 R2, он просто зависает в первом каталоге.
Не уверен, что версия PS слишком важна между v3 и v4 - сценарий довольно прост: - Коробка Windows Server 2008 R2 - PowerShell v3 - Коробка Windows 8 - PowerShell v4
Кто-нибудь знает, почему это может быть?
$csvFile = Read-Host "path to the CSV file with permissions"
$csv = Import-Csv $csvFile
Write-Host "Imported CSV File"
function applyPermissions {
Param(
[string]$Permission,
[string]$Group,
[string]$Dir,
[bool]$Enclosed
)
if ($Enclosed) {
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($Group,$Permission,"ObjectInherit, ContainerInherit","None","Allow")
$Dir = $Dir.Replace("\*","")
$acl = Get-Acl $Dir
$acl.SetAccessRule($rule)
Set-Acl $Dir $acl
}
else {
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($Group,$Permission,"ObjectInherit","NoPropagateInherit","Allow")
$acl = Get-Acl $Dir
$acl.SetAccessRule($rule)
Set-Acl $Dir $acl
}
}
foreach ($r in $csv) {
Write-Host "Processing: $r"
$perm = $r.Permission
$grp = $r.Group
$dr = $r.Path
# enclosed needs to apply recursively
$enc = $false
if($dr -match "\*") { $enc = $true } else { $enc = $false }
if ($perm -eq "ReadWrite") {
applyPermissions -Permission "ReadAndExecute, Write" -Group $grp -Dir $dr -Enclosed $enc
}
else {
applyPermissions -Permission $perm -Group $grp -Dir $dr -Enclosed $enc
}
}
РЕДАКТИРОВАТЬ:
После добавления некоторых точек останова на ISE я вижу, что он попадает в часть Set-Acl в функции applyPermissions
Похоже, что в eventvwr нет вывода, относящегося к какой-либо проблеме / причине зависания PowerShell на этой команде