gpt4 book ai didi

Powershell检查CSV文件中是否有变量

转载 作者:行者123 更新时间:2023-12-04 10:58:45 25 4
gpt4 key购买 nike

我有一个 PS 脚本,它循环遍历文件夹并将其中的一些存档:

$CSV = import-csv -path C:\folder\Builds\ApplicationsMappingNew.csv
$Application = $CSV.Application

$GetAppPath = Get-ChildItem -Path $DestinationDir\Server\*

foreach($line in $GetAppPath){

$AppPath = $Line.fullname
$AppName = Split-Path $AppPath -Leaf
$RAR_Destination = "C:\folder\Builds\test1\SOA-ConfigurationManagement"+"\"+"$AppName"+"_st-FTP.rar"
Push-Location $AppPath
& "C:\Program Files (x86)\WinRAR\rar" a -r $RAR_Destination
}

我有一个 CSV 文件,其中有一个 Application 列:

enter image description here

我的问题是 - 如何,在 foreach 里面循环,我可以比较 $Appname使用 $Application 中的值循环变量值数组变量?

并且,如果 $AppName 的值等于 $Application 中的一个值数组,执行 Push-Location并执行 winrar命令。如果没有,跳到 foreach($line in $GetAppPath) 中的下一个元素?

最佳答案

回答问题:

if the value of $AppName equals a value inside the $Application array



使用以下任一测试:

if ($AppName -in $Application) { ... 

if ($Application -contains $AppName) { ... 

上面执行了文字、全值、不区分大小写的匹配,看看是否 $AppName包含在(匹配一个元素)数组 $Application 中- 有关详细信息,请参阅底部部分。

基于 your own answer , 你真正需要的不是相等比较,而是 通配符匹配 .

您可以 使用 -like运算符(operator) ,因为 - 像许多 PowerShell 比较运算符一样,它可以对数组(集合)进行操作:
if ($Application -like "$AppName*") { ... }

请注意,这里的工作方式略有不同,即 -like带有数组值的 LHS 不返回 bool 值,而是充当数组过滤器 ;也就是说,它返回一个匹配元素的数组;如果没有匹配项,您会得到一个空数组。

感谢 PowerShell 的 implicit to-Boolean conversion ,但是,返回的数组可以被视为 bool 值,因此条件实际上是 $false如果没有匹配(空数组),和 $true如果至少有一个元素匹配(带有非空字符串的非空数组)。

PowerShell 的遏制操作符, -in-contains :

PowerShell 提供了两个(合集) containment operators :
  • <potential-member> -in <collection> (否定也存在: -notin )
  • <collection> -contains <potential-member> (否定也存在: -notcontains )

  • 两者本质上都执行 -eq <potential-member> 的测试再次对 <collection> 的每个元素并返回一个 bool 值( $true$false )以指示(至少)集合的一个元素是否与潜在成员匹配。

    对于字符串,如 -eq ,每个元素都使用文字、全值、不区分大小写的匹配针对潜在成员进行测试。

    有关这些运算符的更多信息,请参阅 this answer .

    关于Powershell检查CSV文件中是否有变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58992834/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com