如何在命令行上传递一系列值-将表达式作为参数传递

我有以下代码:


$srv_range = 29..30+40+50..52

$srv_range.GetType()

$NewVMTemplate = New-Object psobject

$NewVMTemplate | Add-Member -MemberType NoteProperty -Name Name -Value $null


$srv_range | % {

    $pod= $_

    $servers = @()

    1..2 | % {

        $server = $NewVMTemplate | Select-Object *

        $server.Name = "pod" + "{0:D2}" -f $pod + "-srv" + $_

        $servers += $server

    }

    ForEach ( $server in $servers) {

        write-host $server.Name

    }

输出:


PowerCLI C:\ .\eraseme.ps1


IsPublic IsSerial Name                                     BaseType

-------- -------- ----                                     --------

True     True     Object[]                                 System.Array

pod29-srv1

pod29-srv2

pod30-srv1

pod30-srv2

pod40-srv1

pod40-srv2

pod50-srv1

pod50-srv2

pod51-srv1

pod51-srv2

pod52-srv1

pod52-srv2

我想从CLI输入范围,但是用此代码得到以下输出


param(


    [Parameter(Mandatory=$False)] $srv_range


)

#$srv_range = 29..30+40+50..52

$srv_range.GetType()

$NewVMTemplate = New-Object psobject

$NewVMTemplate | Add-Member -MemberType NoteProperty -Name Name -Value $null


$srv_range | % {

    $pod= $_

    $servers = @()

    1..2 | % {

        $server = $NewVMTemplate | Select-Object *

        $server.Name = "pod" + "{0:D2}" -f $pod + "-srv" + $_

        $servers += $server

    }

    ForEach ( $server in $servers) {

        write-host $server.Name

    }


PowerCLI C:\ .\eraseme.ps1 29..30+40+50..52


IsPublic IsSerial Name                                     BaseType

-------- -------- ----                                     --------

True     True     String                                   System.Object

pod29..30+40+50..52-srv1

pod29..30+40+50..52-srv2

如何从CLI输入范围并获得与第一个代码相同的结果?


斯蒂芬大帝
浏览 526回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP