首页 > 解决方案 > 从 csv 创建用户的批处理脚本

问题描述

我无法创建用户,我想将他们名字的第一个字母和他们的整个姓氏作为用户 ID。(我的剧本是法文的)

这里是:

echo off chcp 28591 setlocal enabledelayedexpansion rem je fait la creation de l'ou

for /f "skip=1 tokens=4,5 delims=;" %%A IN (listes_apprenants.csv) DO (

set organisation= %%A set service= %%B

dsadd ou "ou=!organisation!,dc=pme,dc=lan" dsadd ou "ou=!service!,ou=!organisation!,dc=pme,dc=lan" dsadd group "cn=gg_!service!,ou=!service!,ou=!organisation!,dc=pme,dc=lan" dsadd ou "ou=utilisateur,ou=!service!,ou=!organisation!,dc=pme,dc=lan" )

for /f "skip=1 tokens=1,2,3,4,5,6,7,8* delims=;" %%A IN (listes_apprenants.csv) DO (

set prénom= %%A set nom= %%B set site= %%C set organisation= %%D set service= %%E set adresse= %%F set téléphone= %%G set bureau= %%H

dsadd user "cn=!prénom:~0,1!!nom:~0,19!,ou=utilisateur,ou=!service!,ou=!organisation!,dc=pme,dc=lan" -disabled no -pwd Pilote01 -fn !prénom! -ln !nom! -memberof "gg_!service!,ou=!service!,ou=!organisation!,dc=pme,dc=lan" -dept !site! -tel !téléphone! -office !bureau! -mustchpwd yes )

[第三者编辑]

echo off
chcp 28591
setlocal enabledelayedexpansion
rem je fait la creation de l'ou
for /f "skip=1 tokens=4,5 delims=;" %%A IN (listes_apprenants.csv) DO (
    set organisation= %%A
    set service= %%B
    dsadd ou "ou=!organisation!,dc=pme,dc=lan"
    dsadd ou "ou=!service!,ou=!organisation!,dc=pme,dc=lan"
    dsadd group "cn=gg_!service!,ou=!service!,ou=!organisation!,dc=pme,dc=lan"
    dsadd ou "ou=utilisateur,ou=!service!,ou=!organisation!,dc=pme,dc=lan"
)
for /f "skip=1 tokens=1,2,3,4,5,6,7,8* delims=;" %%A IN (listes_apprenants.csv) DO (
    set prénom= %%A
    set nom= %%B
    set site= %%C
    set organisation= %%D
    set service= %%E
    set adresse= %%F
    set téléphone= %%G
    set bureau= %%H
    dsadd user "cn=!prénom:~0,1!!nom:~0,19!,ou=utilisateur,ou=!service!,ou=!organisation!,dc=pme,dc=lan" -disabled no -pwd Pilote01 -fn !prénom! -ln !nom! -memberof "gg_!service!,ou=!service!,ou=!organisation!,dc=pme,dc=lan" -dept !site! -tel !téléphone! -office !bureau! -mustchpwd yes
)

标签: batch-file

解决方案


我在编辑中发现了一些错别字,还有一些多余的代码,所以我在这里重新编写它。

除了prenom之外不需要改变任何东西,因为所有其他项目都可以直接使用。

此外,它分配变量的方式是添加空格,这会导致您可能不想要的结果,此外,我们不知道您是否"在 CSV 中的值周围有双引号,我们不希望在 rheDN作为一个整体被双引号引起来的字符串,以及我们可能需要在用户字段的字符串上。所以我提供他们。

CN 的“NOM”部分通常是整个姓氏,没有理由将这些限制为 20 个字符。

SAMID 中有 20 个字符的限制,但由于您没有指定 SamID,如果未指定,它会自动生成前 20 个字符。:)

(这是您在输入长用户名时通常在 GUI 中看到的行为)

@(setlocal enabledelayedexpansion
  echo off
  chcp 28591
  rem je fait la creation de l'ou
  SET "_Filte=C:\Pah\To\listes_apprenants.csv"
  SET "_Base_DN=dc=pme,dc=lan"
)

CALL :Main

( Endlocal
  Exit /B
)

:Main

  for /f "skip=1 tokens=1-8 delims=;" %%A IN ('
    Type "%_File%"
  ') DO (
    dsadd ou "ou=%%~D,%_BaseDN%"
    dsadd ou "ou=%%~E,ou=%%~D,%_BaseDN%"
    dsadd group "cn=gg_%%~E,ou=%%~E,ou=%%~D,%_BaseDN%"
    dsadd ou "ou=utilisateur,ou=%%~E,ou=%%~D,%_BaseDN%"
    set "prénom=%%~A"
    dsadd user "cn=!prénom:~0,1!%%~B,ou=utilisateur,ou=%%~E,ou=%%~D,%_BaseDN%" -disabled no -pwd Pilote01 -fn "!prénom!" -ln "%%~B" -office "%%~H" -mustchpwd yes -memberof "cn=gg_%%~E,ou=%%~E,ou=%%~D,%_BaseDN%" -dept "%%~C" -tel "%%~G"
)
GOTO :EOF

推荐阅读