Powershell允许用户根据列表离线群集资源

时间:2018-06-14 16:52:34

标签: windows powershell powershell-v3.0

我有一个powershell脚本来提取正在运行的许多通用群集服务。我希望用户能够根据数字选择选择他们想要离线的资源。例如,

$DisplayServices = Get-ClusterResource | Select-Object -Property Name | Format-Table

这会显示如下列表

ClusterService.clearingA.Processor                                                                                 
ClusterService.clearingB.Processor                                                                                  
ClusterService.clearingH.Processor
ClusterService.clearingS.Processor
ClusterService.clearinS.Processor
ClusterService.clearingSSProcessor
ClusterService.clearingZZ.Processor

我想让用户有一个选项说1-10他们想要离线的服务。因此,基于readhost响应,它会在

下面进行
Get-ClusterResource | Where-Object {$_.Name -like '*SpecificName*'} | stop-ClusterResource

所以,而不是输入我希望有一个显示

的全名
1 ClusterService.clearingA.Processor                                                                                 
2 ClusterService.clearingB.Processor                                                                                  
3 ClusterService.clearingH.Processor
4 ClusterService.clearingS.Processor
5 ClusterService.clearinS.Processor
6 ClusterService.clearingSSProcessor
7 ClusterService.clearingZZ.Processor

然后,如果他们输入2,则脚本会执行此操作

Get-ClusterResource | Where-Object {$_.Name -like '*ClusterService.clearingB.Processor*'} | stop-ClusterResource

1 个答案:

答案 0 :(得分:1)

您可以查看-Passthru参数Out-Gridview。它将项目列表显示为UI,并允许用户选择一个项目,然后将其传递给管道。这似乎正是你在这里尝试做的。

Get-ClusterResource | Out-Gridview -Passthru | stop-ClusterResource

Out-Gridview -Passthru的行为类似于交互式Where-Object子句。当窗口出现时,用户可以选择其中一个项目(或使用Ctrl或Shift进行多选),这些项目将通过管道传递到下一个命令。