【发布时间】:2019-10-31 16:57:19
【问题描述】:
我一直在尝试运行 powershell 代码将文件拆分为 2。
我有几个常规数组,效果很好。 第三个数组包含每个条件的通配符,这根本不起作用。
我尝试过 -in -notin、-like -notlike、-contains -notcontains、-match -notmatch,但没有得到我想要的结果。
$NonAutoStructure = @("Not_Found", "UK Training Centre", "IRISH Training Centre", "Head Office", "UK Newmedica")
$AutoJournalDescriptions = @("STORE TRANFrom *", "*SALES BANKED*")#, "*/* CREDIT" , "BANKING DIFF*BQ*" , "*/* MASTERCARD/VISA")
$InactiveStores = @("4410", "0996", "1015", "5996")
$NonAutoJournalCompanies = {$_.Description -notcontains $AutoJournalDescriptions}
$AutoJournalCompanies = {$_.Description -contains $AutoJournalDescriptions}
#$NonAutoJournalCompanies = {$_.structure -in $NonAutoStructure -or $_.Company -in $InactiveStores -and $_.Amount -ne "0.00"}
#$AutoJournalCompanies = {$_.structure -notin $NonAutoStructure-and $_.Company -notin $InactiveStores -and $_.Amount -ne "0.00"}
$UNREC_S0 | Where-Object $NonAutoJournalCompanies | Export-Csv \\774512-LRBSPT01\*****$\uardata\rt1\BankRec\Test\step1\TestNonAutoJournal.txt -notype
$UNREC_S0 | Where-Object $AutoJournalCompanies | Export-Csv \\774512-LRBSPT01\*****$\uardata\rt1\BankRec\Test\step1\TestAutoJournal.txt -notype
$UNREC_S0 | Where-Object $ZeroValuelines | Export-Csv \\774512-LRBSPT01\*****$\uardata\rt1\BankRec\Test\step1\TestZeroLines.txt -notype
我遇到问题的数组是 $AutoJournalDescriptions。如果数组包含一个标准,我只能让它工作。否则,它似乎忽略了它们。 这里它只包含一对,但 # 之后的标准也应该包括在内。 我试图将这些标准作为#(Non)AutojournalCompanies 文件的一部分包含和排除,以便所有数据都被保留,但可以分开,然后可以定向到不同的流程流。
也许我只是想使用一个不应该以这种方式工作的功能......? 我整天都在寻找解决方案,但无济于事。 我可以在文件制作标准中单独键入所有这些标准,但这会使阅读变得繁重且维护起来很麻烦。我更愿意在需要更改时丰富/修改数组。
我希望一切都有意义。 我对powershell很陌生。
非常感谢,
安东尼
【问题讨论】:
-
对于通配符,您需要使用
-like或-notlike。由于-match和-notmatch使用正则表达式,*是一个特殊字符。在正则表达式中,-match 'sales banked'将匹配与-like "*sales banked*"相同的结果 -
顺便说一句,您不需要
@( )来制作数组。
标签: arrays powershell wildcard