gpt4 book ai didi

powershell - 此数字顺序有效,但是正确吗?

转载 作者:行者123 更新时间:2023-12-03 00:47:32 25 4
gpt4 key购买 nike

我需要将虚拟HDD添加到多个VM,所以最终使用它来完成此操作:

get-vm server[2..3..6][1-3].domain.com | new-harddisk -CapacityGB 10

这将10gig HDD添加到服务器:
server21.domain.com
server22.domain.com
server23.domain.com

server31.domain.com
server32.domain.com
server33.domain.com

server61.domain.com
server62.domain.com
server63.domain.com

那就是我想要的...但是我使用的语法正确吗?我知道1..3通常会扩展为1 2 3,但是在这种情况下不是这样,这就是为什么我在第二部分中使用1-3,而2..3..6最终只使用2 3 6的原因。

有人可以验证吗?

最佳答案

1..3是用于生成数组的PowerShell数组语法,但是在Get-VM xyz[1..3]的上下文中不是。您可以从PowerShell ISE中的颜色看到:

Examples of how it's being parsed showing ISE syntax highlighting

如果通过解析器运行它并查看其读取方式,则还可以看到它:

{get-vm server[1..3..5]}.Ast.FindAll({$true}, $true)

# includes output

StringConstantType : BareWord
Value : server[1..3..5]
StaticType : System.String


{get-vm $server[1..3..5]}.Ast.FindAll({$true}, $true)

Operator : DotDot
Left : 1
Right : 3

Value : 1
StaticType : System.Int32

Value : 3
StaticType : System.Int32

Value : 5
StaticType : System.Int32

换句话说,您的语法对于PowerShell数组扩展是错误的(它们不能链接在一起),但是它们不是PowerShell数组文字,它们是作为参数传递给Get-VM cmdlet的文字字符串,(大概是)以某种方式将其视为通配符。

Hyper-V Get-VM 说它不支持通配符。

VMware Get-VM 的示例中确实演示了通配符。

通过使用PowerCLI的一些实践,看起来 ..被忽略了, [236]的意思是“此位置为2、3或6”, [1-3]的意思是“此位置为1到3之间的数字”。哪个正在获取您想要的输出,因此从这个意义上讲,语法很好。可能比您能够使用PS阵列更容易。

关于powershell - 此数字顺序有效,但是正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40388074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com