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