PowerShell не разделяет параметры - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть скрипт PowerShell (ниже), который принимает аргумент (строку), а затем разбивает его.По какой-то причине приведенный ниже код не работает, если я не использую промежуточную переменную, подобную этой.Мой вопрос - почему это так?

$ name2 = $ name.Split ("")

function New-Name {

    param(
    [parameter(Mandatory=$True)]
    [string] $name
    )

    $name = $name.Split(" ")

    Write-Debug $name

    if( $name.Count -gt 1 ) {
        Write-Debug "2+"
    }
    else {
        Write-Debug "1"
    }

}

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Как говорит cbaconnier: .Split() возвращает массив подстрок.
Например, если у вас есть:

$name = 'John Doe'
$firstname = $name.Split(" ")[0]  # returns "John"
$lastname  = $name.Split(" ")[1]  # returns "Doe"

Вместо использования метода .Net .Split(), вы также можете сделатьPowerShell -split, который использует регулярное выражение и имеет преимущество, заключающееся в выполнении вышеизложенного за один раз:

$name = 'John Doe'
$firstname, $lastname = $name -split ' '

Посмотрите на метод String.Split для многих перегрузок, которые выможно использовать, а также посмотреть на О Split .

Надеюсь, что это объясняет ответ @cbaconnier

0 голосов
/ 05 декабря 2018

Это происходит потому, что вы объявляете $name как string, но $name.Split(" ") возвращает массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...