Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 读取CSV文件,然后拆分值并创建一个全局变量_Powershell - Fatal编程技术网

Powershell 读取CSV文件,然后拆分值并创建一个全局变量

Powershell 读取CSV文件,然后拆分值并创建一个全局变量,powershell,Powershell,正在尝试读取具有逗号分隔行的文件。我想读取每一行并将其拆分为数组,然后用数组值生成一个全局变量 文件内容: server1,component1,service1 server2,BatchProcessor2,service2 server3,BatchProcessor3,service3 但我得到的是空值 代码: 这样做: $csv = Import-Csv -Path 'D:\Test\build.properties.dev' $csv | ForEach-Object {

正在尝试读取具有逗号分隔行的文件。我想读取每一行并将其拆分为数组,然后用数组值生成一个全局变量

文件内容:

server1,component1,service1 server2,BatchProcessor2,service2 server3,BatchProcessor3,service3 但我得到的是空值

代码:

这样做:

$csv = Import-Csv -Path 'D:\Test\build.properties.dev'

$csv | ForEach-Object {
    $path = "D:\$($_.servername)\$($_.componentname)\$($_.servicename)"
    if (!(Test-Path $path)) {
        New-Item -Itemtype Directory -Path $path -Confirm:$false -Force
    }
}

如果.csv没有标题,请添加它们。如果不能,请以编程方式进行。例如,您可以使用
Tee对象
。上述原则同样适用。

部署费用从何而来?您正在分配一个值t。一个$Var的道具,但我不知道它从哪里来……还有,为什么你的管道被封闭在parens中?这似乎是不必要的…也。。。您在哪里获得空值??这对您有用吗?@Avinash您好,请接受我下面的回答,因为它似乎解决了您的问题?非常感谢。在我的win7ps5.1安装程序中,
New Item
cmdlet需要
-Force
参数来生成完整路径。你是否测试过你的代码,以确保它将构建整个路径,如果它不在那里?我没有在Windows7上测试。如果我使用的命令在Windows 7上有要求,请添加该参数。我写在StackOverflow的Chromebook上。当时没有可用的Powershell。我相信这会奏效。我确实在上面添加了-Force参数.kool!我认为在所有OSs上创建多级路径仍然需要它。感谢您添加该参数!我测试过这个。我不需要武力。WMF 5.1,Windows 1803。感谢您的反馈。。。我感谢你的信息![咧嘴笑]
$fileIn  = 'D:\Test\build.properties.dev'
(Import-Csv -Path $filein -Delimiter ',' -Header 'ServerName','ComponentName','ServiceName' | ForEach-Object {
    $deployment.path = D:\$_.ServerName\$_.ComponentName\$_.ServiceName
    if (!(Test-Path $deployment.path)) {
        New-Item -ItemType Directory -Force -Path $deployment.path
    }
})
$csv = Import-Csv -Path 'D:\Test\build.properties.dev'

$csv | ForEach-Object {
    $path = "D:\$($_.servername)\$($_.componentname)\$($_.servicename)"
    if (!(Test-Path $path)) {
        New-Item -Itemtype Directory -Path $path -Confirm:$false -Force
    }
}