【发布时间】:2023-03-14 22:25:01
【问题描述】:
我正在尝试编写一个 PowerShell 脚本来
- 读入 CSV 文件
- 循环遍历 CSV 文件中的每一行。
- 在每个循环中,我想将 CSV 标头和行值传递给另一个脚本,均采用
System.String类型格式。
特别是,我正在努力转换为字符串类型格式——最好的方法是什么。
脚本 1:
$csvPath = 'C:\Temp\Scripts\trial_csv.csv'
# Get the header
$header = Get-Content $csvPath -TotalCount 1
$IntermediateOutput = "'C:\Temp\Scripts\output'"
$scriptPath = 'C:\Temp\Scripts\Temp.ps1'
# Get the data
Get-Content $csvPath |
Select -Skip 1 |
ForEach-Object {
$argumentList = @()
$argumentList += ("-Header", $header)
$argumentList += ("-row", $row)
$argumentList += ("-IntermediateOutput", $IntermediateOutput)
$argumentList += ("-index", $i )
Invoke-Expression "& `"$scriptPath`" $argumentList"
}
脚本 2:
从脚本 1 接收输入:
Param(
[Parameter(Mandatory=$True)]
[String]$header, # The header of CSV file
[Parameter(Mandatory=$True)]
[String]$row, # The row of the file, like "1,0,2,.."
[Parameter(Mandatory=$True)]
[String]$IntermediateOutput, # Intermediate directory
[Parameter(Mandatory=$True)]
[String]$index # Index
)
Do something later (todo)
$a = $header
$b = $row
$c = $IntermediateOutput
$d = $index
【问题讨论】:
-
最好提出具体的问题:展示你的代码,解释它的作用以及你无法弄清楚的地方。在它的当前形式中它是模糊的:object.ToString 转换为 System.String,但你可能已经知道了。
-
我收到一个错误,不知道为什么:缺少参数“header”的参数。指定“System.String”类型的参数,然后重试。
标签: string powershell csv