我正在编写一个脚本,该脚本将使用url并获取其证书信息。我已经建立了证书部分,并且需要有关excel的帮助。 我将所有URL存储在一个很大的excel文件中。
我可以使用
导入$xcel = Import-CSV C:\path\test.csv
然后我可以查看该工作表中的不同值
$xcel | get-member
现在在这里我可以看到所有不同的列名
我想做的是按列过滤,然后取另一个列值。
例如,一列具有TYPE字符串,下一列具有URL字符串
我想按特定的TYPE排序,然后采用每个URL类型
我该怎么做?
我(今天)对Powershell超级陌生,我正在尝试类似的东西
$xcel | foreach{if($_.TYPE -like "example"){$url = $_.URL}}
理想情况下,我想将每个匹配的列URL存储在一个变量中,然后在构建的用于检索证书的Certificate函数中使用。
如何为if添加其他过滤器,然后获取每个返回的URL并将每个URL传递给Certificate函数?
答案 0 :(得分:2)
如果只关心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
}
}