Исключение, вызывающее «Подстроку» с аргументом (ами) «2»: «Индекс и длина должны относиться к месту в строке. Имя параметра: длина» - PullRequest
0 голосов
/ 21 июня 2020

, если вы можете помочь с ошибкой ниже. Я получаю сообщения об ошибках в этих строках. Он создает учетную запись. Он преобразует первую букву имени в заглавную и то же самое для фамилии. Однако после его выполнения выдается следующая ошибка. Это продолжается, пока я не остановлюсь.

ForEach ($User in $Users) {
        $FirstName = $User.FirstName.Substring(0,1).toupper() + $User.FirstName.Substring(1).tolower()
        $LastName = $User.LastName.Substring(0,1).toupper() + $User.LastName.Substring(1).tolower()
        $SAM = $user.FirstName + $user.LastName.Substring(0,1)



Exception calling "Substring" with "2" argument(s): "Index and length must refer to a location within the string. Parameter name:  length" At C:\Users\student\Automate\CreateADaccount copy.ps1:17

char:5
+ $FirstName = $User.FirstName.Substring(0,1).toupper() + $User.d ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentOutOfRangeException   Exception calling "Substring" with "2" argument(s): "Index and length must refer to a location within the string. Parameter name: length" At C:\Users\student\Automate\CreateADaccount copy.ps1:18 char:5
+ $LastName = $User.LastName.Substring(0,1).toupper() + $User.d ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentOutOfRangeException

1 Ответ

0 голосов
/ 21 июня 2020

Кажется, вы ищете Title Case, и то же самое можно достичь с помощью следующего:

$SAM = (Get-Culture).TextInfo.ToTitleCase($User.Firstname.ToLower()) + $User.Lastname.Substring(0,1).ToUpper()

Или

$Firstname = (Get-Culture).TextInfo.ToTitleCase($User.Firstname.ToLower())
$Lastname = (Get-Culture).TextInfo.ToTitleCase($User.Lastname.ToLower())
$Lastname_Initials = $Lastname.Substring(0,1)
$SAM = $Firstname + $Lastname_Initials
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...