powershell不区分大小写条件

eufgjt7s  于 2022-12-13  发布在  Shell
关注(0)|答案(1)|浏览(191)
$so= Read-Host -Prompt 'Input the OS'
$vm= Read-Host -Prompt 'Input the name'

##Querty
 Get-VM | Where-Object { $_.Name.Contains($vm.ToLower()) -or $_.Name.Contains($vm.ToUpper()) -and $_.Guest.OSFullName.Contains($so) } | Select Name |ft

输入SO:红色
输入虚拟机名称:快去快回
如果变量$so包含“red”,并且name包含值$vm,则获取“Name”。但是,在对象中,SO是句子大小写(红色),因此条件不起作用。
如何在不区分大小写字母的情况下进行查询?
进入对象$_.Guest.OSFullName,存在更多的字符串:SUSE、Red、Ubuntu、微软等

6pp0gazn

6pp0gazn1#

您可以使用PowerShell字串比对运算子,根据预设,这些运算子不区分大小写,这与.NET字串方法不同。

Get-VM | 
    Where-Object { $_.Name -like "*$vm*" -and $_.Guest.OSFullName -like "*$so*" } | 
    Format-Table -Property Name

表格格式对于单个属性没有多大意义。要仅输出名称:

Get-VM | 
    Where-Object { $_.Name -like "*$vm*" -and $_.Guest.OSFullName -like "*$so*" } | 
    ForEach-Object Name

相关问题