Назад | Перейти на главную страницу

Пакетный скрипт для создания домашних домашних каталогов из списка имен

Я пытаюсь создать домашние каталоги с разрешениями из текстового файла. Я могу получить только командный файл для запуска первой строки. Кто-нибудь может сказать мне, почему?

Я запускаю сценарии, запустив go.bat от имени администратора.

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

Вы могли бы использовать свое знакомое icacls команды с циклом PowerShell в качестве «введения» в PowerShell.

Что-то вроде этого должно сработать

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 и Set-ACL для работы с разрешениями в PowerShell, а также замены для mkdir и аналогичные команды, но таким образом вы можете легкость в его использовании.