Автоматическое добавление числа к переменной в Powershell - PullRequest
0 голосов
/ 11 мая 2018

Я просмотрел несколько сайтов в Интернете и просмотрел несколько ответов здесь, и мне не повезло с моим вопросом.

У меня есть скрипт PowerShell для автоматизации создания учетных записей с использованием информации, введенной на хосте. Мой вопрос заключается в следующем: как я могу настроить свой скрипт на автоматическое добавление числа в конце представленных данных, если они уже существуют? Блок кода ниже:

$Username = Read-host "Enter Desired Username"

#Test

IF(!(Get-ADUser -Identity $Username))
{ Write-Host "$username exists. Adding number.
  HERE IS THE CODE I AM LOOKING FOR TO TAKE THE $Username and automatically add the number at the end.
}

Если на этот вопрос уже был дан ответ, пожалуйста, пришлите мне ссылку, и я отмечу это как ответившую, но если нет, любые предложения будут хорошими.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Чтобы дополнить другой ответ, вы также можете сделать что-то подобное, чтобы определить следующее доступное имя пользователя:

$Username = Read-Host -Prompt 'Enter desired username'

$TestUsername = $Username

$i = 1

While (Get-ADUser -Identity $TestUsername)
{
    Write-Warning "$TestUsername is taken"
    $TestUsername = $Username + $i++
}

"The next available username is $TestUsername"

В цикле оператор ++ используется для увеличения переменной счетчика $iи добавляет это к исходному имени пользователя каждый раз, когда цикл повторяется.Обратите внимание, что сначала он добавляется, а затем увеличивается, поэтому мы начинаем с 1.

0 голосов
/ 11 мая 2018

Я написал такой скрипт. Моя логика:

  1. Перед созданием учетной записи, сначала запросите эту учетную запись
  2. Если учетная запись существует, добавьте суффикс к 2-значному номеру (от 01, отформатируйте "{0:d2}" -f
  3. Запросите суффиксную учетную запись, повторите шаги 1 и 2, пока учетная запись не существует (используйте рекурсивную функцию).

Это код:

$seq = 1
Function Check-Existing {
    param(
        [Parameter(Mandatory=$true)]
        [string]$Account
    )

    while (Get-ADUser $Account){
        $suffix = "{0:d2}" -f $seq
        $Account = $Account + $suffix
        $seq++
        return $Account
    }

    Check-Existing -Account $Account
}

(я проверю код в понедельник)

0 голосов
/ 11 мая 2018

Поскольку этот сценарий не запускается автоматически и вводится пользователем, я бы предложил просто повторно запросить пользователя, если имя занято:

Do
{
    $Username = Read-Host -Prompt 'Enter desired username'
} While (Get-ADUser -Identity $Username)

В качестве альтернативы:

$Username = Read-Host -Prompt 'Enter desired username'
While (Get-ADUser -Identity $Username)
{
    "Username '$Username' taken!"
    $Username = Read-Host -Prompt 'Enter desired username'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...