提问人:Jeremy Frank 提问时间:9/20/2023 最后编辑:Jeremy Frank 更新时间:9/20/2023 访问量:58
无法让我的 PowerShell 函数导出到文件中包含值的 CSV
Can't get my PowerShell Function to export to a CSV with value in the file
问:
我是 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 或为空的参数,然后再次尝试该命令
我做错了什么,在我调用函数并输入路径之前,该变量将为空。
答:
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
非常感谢您提供反馈和帮助。我完全尝试了你所展示的,它奏效了。再次感谢你
评论
Get-SortCity 'the\path\to\theCsv.csv'