我有一个4列的CSV文件。我正尝试根据部门编号列的值将成本列的值复制到公司成本列。基本上,部门编号以8* 开头的任何成本都将被移动或复制到公司成本列。
供参考:
原件:
| 员工ID|所有者电子邮件|部门编号|费用|
| - ------|- ------|- ------|- ------|
| FG345| test@mail.com|小行星8894|四千六百五十四点四五|
| 78f54| test2@mail.co|小行星3453|小行星4994.15|
期望值:
| 员工ID|所有者电子邮件|部门编号|费用|公司成本|
| - ------|- ------|- ------|- ------|- ------|
| FG345| test@mail.com|小行星8894|四千六百五十四点四五|四千六百五十四点四十五|
| 78f54| test2@mail.co|小行星3453|小行星4994.15||
我尝试过使用foreach循环,但我必须承认我对PowerShell还是个新手,边学边用。到目前为止,我尝试过的代码如下所示:
$corpcosts= foreach($corpcost in $CSVImport.corpcosts){
if($CSVImport.DepartmentNumber -eq "8*"){
$CSVImport.DepartmentNumber + $CSVImport.Costs
}
}
$CSVImport|Select-Object *, @{N= 'CorpCosts'; E={$corpcosts[$_.CorpCosts]}} |Export-Csv "$Env:temp/$OutputFile" -NoTypeInformation
2条答案
按热度按时间qhhrdooz1#
只需对表达式进行一些更改,即可添加if语句来检查以数字8开头的部门,如果为真,则将Costs列填充到新的CorpCosts列中。
bybem2ql2#
您可以只使用一个calculated property来完成此操作,对于比较,您可以使用
.StartsWith
或您选择的匹配运算符(-like '8*'
或-match '^8'
),并不是说等式运算符不知道wildcard characters (*
)。