如果我们传递如下参数,Powershell splatting会起作用。
$Vm = @{
Name = "NewVm"
MemoryStartupBytes = 1GB
NewVHDPath = d:\vhd\base.vhdx
}
New-VM @VM
但如果尝试如下,则无法正常工作。
New-VM @{
Name = "NewVm"
MemoryStartupBytes = 1GB
NewVHDPath = d:\vhd\base.vhdx
}
我也试过
New-VM @( @{
Name = "NewVm"
MemoryStartupBytes = 1GB
NewVHDPath = d:\vhd\base.vhdx
}
)
此处还创建了哈希表(未命名的哈希表)。但为什么它不接受?是否有任何技巧可以让它相信它是变量?
一个技巧是编写代理如下。
function New-myVM
{
param
(
[Hashtable] $ht
)
New-VM @ht
}
New-MyVM @{
Name = "NewVm"
MemoryStartupBytes = 1GB
NewVHDPath = d:\vhd\base.vhdx
}
但是如果我们这样做,那么每个命令都需要很重的代理。
如果它可以像这样写,它看起来像DSL。所以我想找到一种方法。