Este script foi projetado para tornar a aplicação de permissões para um novo servidor muito mais fácil. Não está fazendo isso atualmente: (
Por alguma razão, funciona muito bem na minha máquina Win 8, onde eu fiz isso. Quando eu o executo na máquina de destino, um servidor 2008 R2, ele simplesmente trava no primeiro diretório.
Não tenho certeza se a versão PS é importante demais entre a v3 e a v4 - o script é bastante simples: - A caixa do Windows Server 2008 R2 é o PowerShell v3 - A caixa do Windows 8 é PowerShell v4
Alguém sabe por que isso pode ser?
$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
}
}
EDITAR:
Depois de adicionar alguns pontos de interrupção no ISE, posso ver que ele fica preso na parte Set-Acl na função applyPermissions
Aparentemente, não há saída em eventvwr relacionada a qualquer problema / causa para o powershell pendurado neste comando