下午好,
param(
[string]$script = "help",
[ValidateSet("localhost", "Server1", "Server2")]
[string]$server,
[ValidateSet("DC0_C0", "DC0_C1", "DC0_C2", "Customer1")]
[string[]]$cluster,
[switch]$help
)
./viexec vminfo localhost Cluster1,Cluster3,Cluster10
./viexec vminfo localhost Customer1 #And have the script run automatically on all the right clusters.
问候你,亚历桑德罗
以下是基于JSON的答案的一个变体:
>
根据请求使用CSV文件作为数据源。
显示了一个更简单的组合制表符完成和验证解决方案,其基础是将一个实现System.Management.Automation.IValidateSetValuesGenerator
接口的类传递给ValidateSet
属性(感谢地改编自此答案),但请注意,它需要PowerShell(Core)7+。
首先,创建一个包含2个客户及其关联集群的示例CSV文件:
# Create a sample CSV file that maps customer names to clusters.
# This will serve as the basis for tab-completion / argument validation.
# IMPORTANT: Be sure that you have enough headers (colum names) to cover
# the maximum number of columns values.
@'
Customer,Cluster1,Cluster2,Cluster3,Cluster4,Cluster5
Customer1,DC0_C0,DC0_C1,DC0_C2
Customer2,DC1_C0,DC1_C1
'@ > CustomersToClusters.csv
在此基础上构建的代码:
# Parse the CSV file, assumed to be located in the same dir.
# as this script.
$csvRows = Import-Csv $PSScriptRoot/CustomersToClusters.csv
# Build a hashtable of customer names mapped to their associated clusters.
$colCount = $csvRows[0].psobject.Properties.Name.Count
$htCustomersToClusters = [ordered] @{}
foreach ($row in $csvRows) {
$htCustomersToClusters[$row.Customer] = $row.psobject.Properties.Value[1..($colCount-1)] -ne $null
}
# Build an array of all customer and cluster names.
[string[]] $allCustomersAndClusters = $htCustomersToClusters.Keys + $htCustomersToClusters.GetEnumerator().ForEach({ $_.Value })
# Define the custom class that implements the System.Management.Automation.IValidateSetValuesGenerator
# interface, to be passed to the [ValidateSet()] attribute.
class CustomerAndClusters : System.Management.Automation.IValidateSetValuesGenerator {
[string[]] GetValidValues() { return $script:allCustomersAndClusters }
}
function Invoke-VI {
param(
# Provide tab-completion and validation based on the values
# returned by a [CustomersAndClusters] instance's .GetValidValues() call.
[ValidateSet([CustomerAndClusters])]
[string[]] $Cluster
)
# Resolve the specified cluster arguments and remove duplicates from the
# resulting list of cluster-only names.
$resolvedClusters = $Cluster | ForEach-Object {
# If a customer name was specified, resolve it to the list of associated clusters.
if ($customerClusters = $htCustomersToClusters[$_]) { $customerClusters }
else { $_ }
} | Select-Object -Unique
"Specified or implied clusters: $resolvedClusters"
}
问题内容: 我正在尝试建立一个简单的Java程序,该程序可以从其他多个图像(jpg)创建一个动画gif。谁能给我一个有关如何在Java中实现此目标的信息?我已经搜索过Google,但找不到任何真正有用的信息。 感谢你们! 问题答案: 这里有一个类的示例,该类从不同的图像创建动画的gif: 链接 编辑:链接似乎已死。 无论如何,为了清楚起见,这段代码是由Elliot Kroo完成的。 编辑2:感谢您
问题内容: 我正在编写小型且非常干燥的框架,该框架高度依赖元数据。我想知道是否有一种方法来获取方法参数名称,即给定一些方法 得到的字符串和。 我知道我可以注释参数,但是那不是很好。 问题答案: 我们为包含参数名称的String[]的方法创建了一个自定义注释。与必须注释每个单独的参数相比,此方法感觉易于管理。我们计划添加构建时检查,以确保带注释的参数名称的数量与参数的数量匹配,因为这是我们所需要的。
我有一个文档,它包含一个数组,如下所示。这是第一份文件。 我需要在聚合框架中用nestedData数组中的_id查找(连接)到另一个集合。
问题内容: 假设我有以下代码: 这段代码的问题在于,协程内部的循环永远不会完成第一次迭代,而大小会不断增加。 为什么会这样发生,我该怎么解决? 我无法摆脱单独的线程,因为在我的真实代码中,我使用了单独的线程与串行设备进行通信,而且我还没有找到使用的方法。 问题答案: 不是线程安全的,因此您不能直接在多个线程中直接使用它。相反,您可以使用,它是提供线程感知队列的第三方库: 还有(全披露:我写了它),
Go的范围可以在地图和切片上迭代,但我想知道是否有一种方法可以在一系列数字上迭代,比如: 或者有没有一种方法来表示Go中的整数范围,就像Ruby对类范围所做的那样?
我正在尝试设置一个webapp,通过JSON发送数据库表。我想不费吹灰之力把所有的参赛作品都寄出去。因此,我将所有字段读取为ArrayList,现在我可以通过JSON逐个解析并发送它们。但是,难道没有一种方便的方法将它们全部打包到一个JsonArray中吗? 下面是我的代码示例: