Дописать скрипт на Powershell

Обсуждаем проблемы программирования
Ответить
Scrat2005
Сообщения: 17
Зарегистрирован: Вс окт 11, 2020 2:28 pm

Дописать скрипт на Powershell

Сообщение Scrat2005 »

Доброго времени суток!
Нужна помощь начинающему...На этом сайте нашел вот такой скрипт. Скрипт рабочий все хорошо, но нужно еще немножко кода добавить:

Код: Выделить всё

# добавляем список пользователей в указанные группы
#LOGIN;GROUPS
#user1;group1
#user2;group2
#user3;group3
 
$ErrorActionPreference='Continue'
$error.Clear()
$i=0
  
import-module activedirectory
$pathToCSV='C:\Script\Add_test365.csv'
$csv=Import-Csv -path $pathToCSV -Delimiter ';' 
foreach ($group in $csv)
{
    $uname="$($group.LOGIN)".ToString().Split(';')   #.split('\')[1]
    $groupname="$($group.GROUPS)"
    Add-ADGroupMember -Identity $groupname -Members $uname  
    $i++
}
 
 if ($error.Count -gt 0)
{
    echo "Errors count: " $error.Count
}
$success=$($i-$error.Count)
if ($success -gt -1)
{
echo "Success records count: " $success
}
в этот код нужно добавить, чтобы еще и "привязку" LogonWorkstations указанных хостов (в LogonTo..)
Перед добавлением скрипт должен проверить:
1.если LogonTo.. не используется, то пропустить добавление хостов.
2.если LogonTo.. не пустой и указанных хостов нет в нем, то добавить указанные хосты.

У меня есть отдельный скрипт, вот такой:

Код: Выделить всё

cls
$users = get-content "D:\Documents\user_list.txt"
ForEach ($user in $users)
{ 
    $adUseruser = Get-ADUser $user -Properties *
    $adUseruser.LogonWorkstations = @($adUseruser.LogonWorkstations, 'dc01,dc02,dc03') -join ','
    Set-ADUser -instance $adUseruser 
}
не получается у мене объеденить эти 2 скрипта. На данный момент я использую эти 2 скрипта. сначала загоняю в группы, затем проверяю привязки, и использую его...
Аватара пользователя
sanglyb
Site Admin
Сообщения: 49
Зарегистрирован: Вт сен 19, 2017 9:32 pm

Re: Дописать скрипт на Powershell

Сообщение sanglyb »

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

Код: Выделить всё

# добавляем список пользователей в указанные группы
#LOGIN;GROUPS;COMPS
#user1;group1;comp1,comp2,server1
#user2;group2;comp1,comp3,comp4
#user3;group3
 
$ErrorActionPreference='Continue'
$error.Clear()
$i=0
  
import-module activedirectory
$pathToCSV='.\users.csv'
$csv=Import-Csv -path $pathToCSV -Delimiter ';' 
foreach ($group in $csv)
{
    $uname="$($group.LOGIN)".ToString().Split(';')   #.split('\')[1]
    $groupname="$($group.GROUPS)"
    $comps="$($group.COMPS)"
    
    Add-ADGroupMember -Identity $groupname -Members $uname  

    $user=get-aduser "$uname" -properties *
    if ($user.LogonWorkstations -ne $null){
	$compsArray=$comps.split(",")
	$userCompsArray=$user.LogonWorkstations.split(",")
        $compsArray=(($compsArray+$usercompsarray) | sort-object | get-unique) -join ','
        $user.LogonWorkstations = @($adUseruser.LogonWorkstations, $compsArray) -join ','
        Set-ADUser -instance $user 
    }
    $i++
}
 
 if ($error.Count -gt 0)
{
    echo "Errors count: " $error.Count
}
$success=$($i-$error.Count)
if ($success -gt -1)
{
echo "Success records count: " $success
}
Scrat2005
Сообщения: 17
Зарегистрирован: Вс окт 11, 2020 2:28 pm

Re: Дописать скрипт на Powershell

Сообщение Scrat2005 »

Спасибо! Оперативно. Если нечаянно запустить его повторно, то он добавит повторно хосты мне кажется... или нет? Массив как очищается?
Аватара пользователя
sanglyb
Site Admin
Сообщения: 49
Зарегистрирован: Вт сен 19, 2017 9:32 pm

Re: Дописать скрипт на Powershell

Сообщение sanglyb »

Нет, повторно не будет добавляться. Get-unique оставляет только уникальные значения.
Scrat2005
Сообщения: 17
Зарегистрирован: Вс окт 11, 2020 2:28 pm

Re: Дописать скрипт на Powershell

Сообщение Scrat2005 »

Спасибо большое. Работает.
Ответить