Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Создание папки "Имя Фамилия" для доменного пользователя

Ответить
Настройки темы
VBS/WSH/JS - [решено] Создание папки "Имя Фамилия" для доменного пользователя

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Есть сетевая папка в которой нужно создать папку пользователя от имени пользователя. Хотелось бы сделать это на js (дабы дополнить имеющийся скрипт, а не плодить новые)
На posh у меня получилось приблизительно так:
Код: Выделить весь код
Get-ADUser $env:USERNAME | ForEach {
$folder="\\server\Именные\" + $_.Surname + " " + $_.GivenName}
if (!(Test-Path "$folder")) {New-Item -Path "$folder" -ItemType "directory"}
Помогите это перевести, если оно вообще переводимо.
Несущественная информация, которая мало влияет на суть задачи.
В названии темы случайно указал "Имя Фамилия", на самом деле "Фамилия Имя".

Отправлено: 16:27, 30-01-2017

 

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


т.е. js практически не знаю обратился к cmd. вытащил имя и фамилию через wmi, но дальше какая-то лажа. что-то я делаю не так, и понять не могу что.

Код: Выделить весь код
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

for /f "skip=1 delims=" %%i in ('WMIC /Namespace:\\root\directory\LDAP Path DS_user Where "DS_sAMAccountName='%username%'" Get DS_sn ^|findstr .') do (
for /f "skip=1 delims=" %%j in ('WMIC /Namespace:\\root\directory\LDAP Path DS_user Where "DS_sAMAccountName='%username%'" Get DS_givenName ^|findstr .') do (
echo %%i
echo %%j
set foldername=%%i %%j
echo !foldername!
))
по отдельности переменные ведут себя весьма адекватно, а вот когда пытаюсь их записать в одну строку - лажа какая-то.

Отправлено: 17:56, 31-01-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Elven, wmic.exe осуществляет вывод в Unicode (UTF-16 LE/1200). Когда for /f осуществляет попытку разбора вывода в такой кодировке, юникодные концы строк 0x000D, 0x000A превращаются в неудобоваримый OEM-ный набор из 0x0D, 0x0D, 0x0A. Это хорошо видно по результатам перенаправления вывода в файл:
Код: Выделить весь код
>"Out.txt" (for /f "usebackq delims=" %i in (`wmic.exe UserAccount get Name`) do @echo [%i])
Видите выделенные 0x0D:
Скрытый текст

? Вот они-то и мешаются.

Самым простым способом компенсировать такое поведение является двойной разбор по for /f. Могу поискать пример, «их тут были».

P.S. А почему Вы делаете два запроса, а не один:
Код: Выделить весь код
… get DS_sn, DS_givenName …
?
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:50, 02-02-2017 | #3


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Iska, если цеплять их одним запросом вне зависимости от очередности запроса вывод идет сначала имени, а потом фамилии. тут или брать значения с ключом /value и обрезать лишнее или двумя for, чтобы запихнуть в отдельные переменные. второй вариант мне как-то больше приглянулся.

С двойным разбором по for можно подробнее?

Отправлено: 15:08, 08-02-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Elven:
тут или брать значения с ключом /value и обрезать лишнее »
Можно и так, и этак. А что там лишнего обрезать? Покажите пример вывода wmic.exe c get DS_sn, DS_givenName из LDAP с /value и без.

Цитата Elven:
С двойным разбором по for можно подробнее? »
Примерно так (ну, и демонстрация произвольного порядка вывода извлечённых свойств, в качестве DS_sn и DS_givenName выступают Name и SID):
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq skip=1 delims=" %%i in (
	`wmic.exe UserAccount where "LocalAccount='True' AND Disabled='False'" get Name^, SID`
) do for /f "tokens=1,2" %%j in ("%%~i") do (
	echo [%%j] [%%k]
	echo [%%k] [%%j]
	echo.
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:37, 09-02-2017 | #5


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Самое то.
получилось как-то так:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq skip=1 delims=" %%i in (
	`WMIC /Namespace:\\root\directory\LDAP Path DS_user Where "DS_sAMAccountName='%username%'" Get DS_sn^, DS_givenName`
) do for /f "tokens=1,2" %%j in ("%%~i") do (
	echo %%k %%j
	pushd \\server\Именные\
	MD "%%k %%j"
	popd
)

endlocal
exit /b 0

Отправлено: 14:33, 09-02-2017 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


По идее можно и зараз:
Код: Выделить весь код
MD "\\server\Именные\%%k %%j"

Отправлено: 15:12, 09-02-2017 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Создание папки "Имя Фамилия" для доменного пользователя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - "Неправильное имя папки. Задайте другое имя." при подключении webdav. R.I.G. Microsoft Windows 2000/XP 14 26-10-2012 00:58
V. 2010 - Создание структуры папки "Входящие" для клиентов Exchange 2010 sea707 Microsoft Exchange Server 2 27-12-2011 21:30
Как изменить имя папки установки системы "WINDOWS" на "Windows" user-id-4576 Автоматическая установка Windows 2000/XP/2003 17 03-07-2011 15:36
Dial-Up - Недоступно "высокоскоростное подключение запрашивающее имя пользователя и пароль" XaHyMaH Сетевые технологии 4 19-04-2008 14:31
Изменение "Мой компьютер" на "Имя текущего пользователя на имя компьютера" shcval Microsoft Windows 2000/XP 1 15-12-2006 21:01




 
Переход