Como dar a um usuário direitos de NTFS para uma pasta, via Powershell

5

Estou tentando criar um script que criará uma pasta para um novo usuário em nosso servidor de arquivos. Em seguida, retire os direitos herdados dessa pasta e adicione direitos específicos de volta. Eu adicionei a pasta com êxito (se eu der uma entrada estática no script), dando direitos de administrador de domínio, removendo herança, etc ... mas eu Estou tendo problemas para conseguir usar uma variável que eu configurei como usuário. Eu não quero que haja um usuário estático a cada vez, eu quero ser capaz de executar este script, pedir-me um nome de usuário, ele então sai e cria a pasta, então dá ao mesmo usuário todos os direitos para isso pasta com base no nome de usuário que eu forneci. Eu posso usar o Smithd como usuário, assim:

Novo-item \\ servidor de arquivos \ home $ \ Smithd - Tipo de diretório

Mas não consigo fazer referência ao usuário assim:

Novo-item \\ servidor de arquivos \ home $ \ $ username –Type Directory

Veja o que eu tenho:

Criando uma nova pasta e definindo permissões NTFS.

$username = read-host -prompt "Enter User Name"

New-Item \\fileserver\home$\$username –Type Directory

Get-Acl \\fileserver\home$\$username  

$acl = Get-Acl \\fileserver\home$\$username

$acl.SetAccessRuleProtection($True, $False)

$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)

$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\Domain Admins","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)

$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\"+$username,"FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)

Set-Acl \\fileserver\home$\$username $acl

Eu tentei várias maneiras de fazê-lo funcionar, mas sem sorte. Qualquer idéia ou sugestão seria bem vinda, obrigado.

    
por Don 16.11.2011 / 00:00

2 respostas

2

No meu trabalho anterior, lembro-me de poder usar o antigo comando 'mkdir' para criar pastas em meus scripts do powershell, mas para começar eu sugeriria citando seu caminho e testando com um echo / write-host no início. Tente isso, apenas para testar:

write-host "\${file_server}\home$\${user_name}"

Eu não tenho acesso a uma máquina Windows para testar, mas acredito que o '$' também pode ser um problema.

tente isso com um retrocesso para tentar escapar do $ :

write-host "\${file_server}\home'$\${user_name}"

e não continue, até saber que a string é do seu agrado. Eu não acho que você precise do prompt em seu host de leitura, embora provavelmente não seja um problema. A gravação de hospedagem é sempre uma boa verificação de sanidade.

Espero ter acesso a uma máquina Windows em breve, para que eu possa fornecer uma ajuda melhor.

Além disso, se estiver interessado, você pode fornecer o nome de usuário como um parâmetro no topo do programa, assim você pode chamar repetidamente o script de outro que lê nomes de um arquivo de $ file_server, $ user_name pares. Basta colocar um param( [string] $file_server, [string] $user_name )

Boa sorte! :)

    
por 19.11.2011 / 19:13
-2

Confira estes artigos:

link

e

link

Isso seria útil ..

    
por 16.11.2011 / 02:17