当前,我正在使用此脚本读取D:\驱动器上的所有ID.txt文件,并输出包含所有内容的CSV文件。在每个文件中,只会有一个数字,并且总是在第一行。
$PATH = "D:\"
$Out = @()
Get-ChildItem $PATH -Filter ID.txt -File -Recurse | foreach {
$fileData = @{
"Content" = (Get-Content $_.FullName -Raw)
}
$Out += (New-Object PSObject -Property $fileData)
}
$Out | Export-Csv "C:\out.csv" -NoTypeInformation
这已经为我们工作了很长时间,但是球门柱已经移动了。
我们现在不希望输出带有ID的CSV文件,而是希望将ID.txt文件的内容作为变量直接传递给存储过程。
存储过程以varchar(max)
的形式接受输入,并以IN
语句的形式传递给查询。
是否可以生成一个逗号分隔的列表,并将其一举传递给存储过程,而无需先创建具有值的文件?
答案 0 :(得分:0)
$Out -join ","
会将数组格式化为逗号分隔的字符串,假设$ out是所需ID的一维数组。
当您从文件Select-Object -ExpandProperty ID
(其中ID为列名)中获取Get-Content
时,可能需要使用>XM_024446048.1 PREDICTED: Homo sapiens mannosidase alpha class 2A member 1 (MAN2A1), transcript variant X2, mRNA
CAGCCCCC
TGAGCGAC
TCCCTAATGTG
ACAGTAAAGAA
>NM_001308028.1 Homo sapiens FER tyrosine kinase (FER), transcript variant 2, mRNA
CAGCCC
CCGTGACGC
GGGGTGGTGACT
GGCTC
GGTGGT
GTGAC
>NM_0013082323028.1 H STZ mRSN1A
CAGCCC
CCGTGACGC
GGG
GTGGTGA
CTGGCTCCGGAGT
CTGAGGGGTTCGG
来获取仅包含所需ID值的数组。