我有一个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
答案 0 :(得分:1)
您可以查看-Passthru
参数Out-Gridview
。它将项目列表显示为UI,并允许用户选择一个项目,然后将其传递给管道。这似乎正是你在这里尝试做的。
Get-ClusterResource | Out-Gridview -Passthru | stop-ClusterResource
Out-Gridview -Passthru
的行为类似于交互式Where-Object
子句。当窗口出现时,用户可以选择其中一个项目(或使用Ctrl或Shift进行多选),这些项目将通过管道传递到下一个命令。