无法让PowerShell函数导出到文件中包含值的CSV

wr98u20j  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(89)

我是一个Powershell的新手,我正在做一个任务,我已经试着自己做尽可能多的研究,但我被踩了,没有得到任何地方。
所以,我想做的是创建一个函数,带有一个必需的文件名参数。
此功能将需要执行以下操作:导入提供的CSV文件,仅过滤以显示UT状态结果,仅显示以下属性:state、zip、utility_name、commercial_rate、industrial_rate、residential_rate,按邮政编码对结果进行排序,最后将结果导出到新的CSV文件中
任何帮助将不胜感激。如果我说了什么不清楚的话。让我知道,这样我就可以澄清它。
下面是我的当前函数:

function Get-SortCity {
>>     param (
>>         #This Parameter is mandatory
>>     [Parameter(mandatory=$true)]
>>     [string]$Filename
>>
>>     )#below is my script to import the CSV file, select properties, and then export it to a CSV.
>>     Import-Csv $Filename | Where-Object state -Match utah | Select-Object state, zip, utility_name, commercial_rate, industrial_rate, residential_rate| Sort-Object zip | Export-Csv -Path C:\Users\kyros\Downloads\Documents\utahrates.csv
>> }

当我手动运行我的脚本部分时,我在“Import-Csv $Filename”周围得到一个错误,它告诉我Import-Csv:无法验证参数“Path”上的参数。参数为null或空。请提供一个非null或空的参数,然后重试该命令
我做错了什么,变量将是空的,直到我调用函数并输入路径。

esyap4oy

esyap4oy1#

问题很可能出在

Where-Object state -match utah

犹他州是什么?Powershell不知道你在说什么。它不知道犹他州是一个州。它尝试以解析状态的相同方式解析犹他州。它在输入对象中查找名犹他州的属性。没有这样的财产。所以比较是用$null,这总是失败。
试试这个

Where-Object state -match 'UT'

这里'UT'是一个文字字符串,因为引号。'UT'是一个两个字符的缩写,这可能是什么在您的输入CSV文件。两个字母的州缩写是大写的,'UT'也是。如果我没记错的话,-match是不区分大小写的,但管它呢。

相关问题