如何按名称过滤一列,然后从另一列中获取值?



>我正在编写一个脚本,该脚本将获取一个网址并获取其证书信息。我已经构建了证书部分,需要 excel 部分的帮助。 我将所有网址存储在一个大的 excel 文件中。

我可以导入

$xcel = Import-CSV C:pathtest.csv

然后我可以查看该工作表中的不同值

$xcel | get-member

现在在这里我可以看到所有不同的列名称

我想做的是按列过滤,然后取另一个列值。

例如,一列有一个字符串 TYPE,下一列有一个 URL 字符串

我想按特定类型排序,然后获取每种类型的 URL

我该怎么做?

我是Powershell的新手(今天(,我正在尝试类似的东西

$xcel | foreach{if($_.TYPE -like "example"){$url = $_.URL}}

理想情况下,我想将每个匹配的列 URL 存储在一个变量中,然后在我为检索证书而构建的证书函数中使用。

如何为 if 添加其他筛选器,然后获取每个返回的 URL 并将每个 URL 传递给证书函数?

如果您只关心 URL 标头,则可以执行以下操作:

$xcel.where({$_.TYPE -eq "example"}) | Foreach-Object {
$url = $_.URL
}

如果您只想创建 URL 集合,则只需执行以下操作即可。然后$urls将是一个URL数组,或者您可以通过Foreach-Object或索引($url[0]$url[1]等(单独访问它们。

$urls = $xcel.where({$_.TYPE -eq "example"}).URL

解释:

.where()方法筛选$xcel数组,仅显示TYPE值为example的行。然后将这些生成的行通过管道传输到Foreach-Object中。$URL将保存当前管道对象 ($_( 的 URL 属性的值,即当前行。在该Foreach-Object脚本块中,您可以使用$URL执行其余操作。


另一种解决办法是与第一种略有不同。您可以使用if语句方法,这种方法可以为您提供更大的灵活性。

$xcel | Foreach-Object {
if ($_.TYPE -eq "example") {
$URL = $_.URL
}
else {
$URL = $null
}
}

最新更新