Вы можете сделать это:
$AC = 97..99 | ForEach-Object { [char]$_ }
$DH = 100..104 | ForEach-Object { [char]$_ }
$IM = 105..109 | ForEach-Object { [char]$_ }
$NS = 110..115 | ForEach-Object { [char]$_ }
$TZ = 116..122 | ForEach-Object { [char]$_ }
$HomePath = Switch ($Surname[0]) {
{$_ -in $AC} { 'Users_01$\' }
{$_ -in $DH} { 'Users_02$\' }
{$_ -in $IM} { 'Users_03$\' }
{$_ -in $NS} { 'Users_04$\' }
{$_ -in $TZ} { 'Users_05$\' }
}
При этом используются коды символов ASCII для (строчных букв) a..z для создания различных массивов букв, а затем используется блок Switch
для сравнения первогобуква $Surname
(с помощью оператора массива [0]
) для каждого массива для указания пути к домашнему каталогу (который затем назначается $HomePath
).
В качестве альтернативы вы также можете сделать это:
$HomePath = Switch ([byte][char]$Surname[0]) {
{$_ -in 97..99} { 'Users_01$\' }
{$_ -in 100..104} { 'Users_02$\' }
{$_ -in 105..109} { 'Users_03$\' }
{$_ -in 110..115} { 'Users_04$\' }
{$_ -in 116..122} { 'Users_05$\' }
}
Преобразует первую букву фамилии в ее кодовый номер ASCII, а затем использует диапазоны кодов ascii для определения правильного пути.Это решение короче, но, возможно, менее прозрачно / понятно для всех, кому может потребоваться изменить / сохранить ваш код в будущем.
Также (к вашему сведению), если вы используете PowerShell Core, теперь вы можете создать массивсимволы с оператором ..
напрямую.Например, вы можете сделать: 'a'..'z'
в PowerShell Core.