Script em lote para criar diretórios home da lista de nomes

1

Estou tentando criar um diretório base com permissões de um arquivo de texto. Eu só posso obter o arquivo em lotes para executar a primeira linha. Alguém pode me dizer por quê?

Eu inicio os scripts executando o go.bat como administrador.

go.bat

@echo
for /f %%a in (users1.txt) do call test.bat %%a

test.bat

@echo off
m:
cd \
mkdir %1
icacls %1 /grant %1:(OI)(CI)M 

cd %1

mkdir public
icacls public /inheritance:d
icacls public / All:(OI)(CI)(RD)
icacls public /grant All:(OI)(CI)R

mkdir private
icacls private /inheritance:d
icacls private /remove All

cd \

users1.txt

user1
user2
user3
    
por Steven 02.07.2013 / 23:51

1 resposta

3

Você pode usar seus familiares comandos icacls com o loop do PowerShell como uma "introdução" ao PowerShell.

Algo como isso deve acontecer

Get-Content C:\users.txt | ForEach-Object {
    $User = $_
    $WorkingPath = "M:\" + "$User"
    mkdir $WorkingPath

    icacls $WorkingPath /grant $User:(OI)(CI)M 

    $Public = "$WorkingPath" + "public"
    mkdir $Public
    icacls $Public /inheritance:d
    icacls $Public / All:(OI)(CI)(RD)
    icacls $Public /grant All:(OI)(CI)R

    $Private = "$WorkingPath" + "private"
    mkdir $Private
    icacls $Private /inheritance:d
    icacls $Private /remove All
}

Get-ACL e Set-ACL para trabalhar com permissões no PowerShell, além de substituições de mkdir e comandos semelhantes, mas dessa forma você pode facilitar usá-lo.

    
por 03.07.2013 / 00:58