我有一个文本文件(在本地文件系统上),它是ID值的映射,文件名为:
1111, testfile1.xml 2222, testfile2.xml 3333, testfile3.xml
每一行都是一个映射条目,因此“1111”是testfile1.xml的相应ID值。
我正在尝试将每个测试文件发布到端点,但需要获取与该文件对应的关联ID值,因为在我们要发布到的端点的URI中需要它。
我的脚本中的代码片段,它递归包含所有testfilex.xml的目录并执行POST:
$testFiles = Get-ChildItem $testFileDir
$mapFileLocation = "C:/local/Desktop/map.txt"
foreach ($file in $testFiles) {
$content = Get-Content $file.PSPath
#$id = GRAB ID HERE /*TODO*/
$URI = "http://www.myendpoint:1000/" + $id
$request = Invoke-WebRequest -Uri $URI -Method PUT -Body $content -ContentType "application/xml"
有什么方法可以通过PowerShell构建这样的$id
?可能通过regex-ing?文本文件甚至可以这样解析吗?
答案 0 :(得分:1)
将地图文件读入哈希表,您可以使用文件名作为键,ID作为值。
$map = @{}
Import-Csv $mapFileLocation | ForEach-Object { $map[$_.Filename] = $_.ID }
如果地图文件没有标题,您可以通过参数-Header
为列定义标题名称:
Import-Csv $mapFileLocation -Header ID,Filename
如果文件包含如示例中所示的空格,您可能还需要Trim()
值。
创建哈希表后,您可以像这样使用它:
foreach ($file in $testFiles) {
$content = Get-Content $file.FullName
$URI = 'http://www.myendpoint:1000/' + $map[$file.Name]
...
}