arrays - 如何在 PowerShell 中处理循环数组?
问题描述
我有一个数组。我想检查一个变量(字符串)是否包含在该数组中。我试过这个,但它只检查第一个数组并进行判断。一旦数组为真,我就无法继续转到“NEXTFUNCTION”,它终止了。
function NEXTFUNCTION
{
##some process##
}
$BCUControllerString = @("Configure Storage Controller for Optane","Configure Storage Controller for Raid")
$DiskInfo = Get-PhysicalDisk | Select-Object FriendlyName, Size |
Where-Object {$_.FriendlyName -like "*INTEL OPTANE*" -or $_.FriendlyName -like "*INTEL MEM*" -or
$_.FriendlyName -like "*INTEL HBRPEK*"}
if ($DiskInfo)
{
#Write-Host "Controller Optane"
foreach ($ControllerStringOptane in $BCUControllerString)
{
if ($ControllerStringOptane -like "*Optane*")
{
Write-Host "Controller: $ControllerStringOptane"
NEXTFUNCTION
}
else
{
Write-Host "Fail! "
}
}
}
else
{
Write-Host "Controller Raid"
foreach ($ControllerStringRAID in $BCUControllerString)
{
if ($ControllerStringRAID -like "*Raid*")
{
Write-Host "Controller: $ControllerStringRAID"
NEXTFUNCTION
}
else
{
Write-Host "Fail! "
}
}
}
任何人都可以提供想法。谢谢你。
解决方案
@SBR,除非数组中有更多元素,否则$BCUControllerString
可以完全忽略数组,代码会被压缩,如下所示。
function NEXTFUNCTION
{
##some process##
}
$DiskInfo = Get-PhysicalDisk |
? {$_.FriendlyName -like "*INTEL OPTANE*" -or $_.FriendlyName -like "*INTEL MEM*" -or $_.FriendlyName -like "*INTEL HBRPEK*"} |
select FriendlyName, Size
if ($DiskInfo)
{
Write-Host "Controller Optane"
Write-Host "Controller: Configure Storage Controller for Optane"
}
else
{
Write-Host "Controller Raid"
Write-Host "Controller: Configure Storage Controller for RAID"
}
NEXTFUNCTION
PS:我已经Where-Object
用它的别名?
和Select-Object
' 的对应物替换了select
推荐阅读
- java - java.nio.file.Files 的哪些方法遵循符号链接,哪些不遵循?
- javascript - Why does my AWS Lambda function keep timing out?
- c# - 实现dotnet mvc的简单成就系统
- python - 无法定位元素,无法找到 iframe 或页面加载
- python - 如何将函数结果和调用它的字符串都传递给函数?
- python - python - 如何修复'ValueError:检查输入时出错:预期dense_1_input具有形状(4,)但得到形状为(1,)的数组'错误?
- mysql - mysql全文搜索不起作用,即使条目存在并且ft_min_word_len设置为1
- python - 如何使用 Flask 创建 Web 推送通知
- python-3.x - 我的代码不起作用,为 urllib 包尝试了各种方式?
- python - ValueError:单元测试期间没有名为“notmigrations”的模块