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

Can't get my PowerShell Function to export to a CSV with value in the file

提问人:Jeremy Frank 提问时间:9/20/2023 最后编辑:Jeremy Frank 更新时间:9/20/2023 访问量:58

问:

我是 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 或为空的参数,然后再次尝试该命令

我做错了什么,在我调用函数并输入路径之前,该变量将为空。

PowerShell 函数 CSV 脚本块

评论

0赞 Santiago Squarzon 9/20/2023
函数看起来不错,你收到任何错误吗?你曾经执行过这个功能吗?
0赞 Jeremy Frank 9/20/2023
执行该函数时没有收到任何错误。它只是像我想要的那样创建一个新文件,但创建的新 csv 文件是空白的。
0赞 Abraham Zinala 9/20/2023
手动运行它以查看挂断的位置
0赞 Jeremy Frank 9/20/2023
好的,我运行了我的脚本手册,当我运行“Import-Csv $Filename”部分时。我得到Import-Csv:无法验证参数“Path”上的参数。参数为 null 或为空。提供一个不为 null 或为空的参数,然后重试该命令。
0赞 Santiago Squarzon 9/20/2023
那么,您需要为您的函数提供 Csv 的实际路径,例如:Get-SortCity 'the\path\to\theCsv.csv'

答:

0赞 Walter Mitty 9/20/2023 #1

问题很可能出在

Where-Object state -match utah

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

试试这个

Where-Object state -match 'UT'

这里的“UT”是一个文字字符串,因为有引号。“UT”是状态的两个字符缩写,这可能是输入 CSV 文件中的内容。两个字母的州缩写是大写的,“UT”也是如此。如果我没记错的话,-match 不区分大小写,但到底是什么。

评论

0赞 Jeremy Frank 9/21/2023
非常感谢您提供反馈和帮助。我完全尝试了你所展示的,它奏效了。再次感谢你