首页 > 解决方案 > Powershell 从 csv 批量创建卷访问路径

问题描述

如果您以前这样做过,请提供帮助。我有一个脚本可以在我输入值时工作,但是在从 csv 中提取值时会出现错误,因为值无法识别。

我尝试了不同的方法来连接从 .csv 中提取的值(例如使用连接路径),但似乎仍然没有使 add-partitionaccesspath 接受来自 csv 的值。这肯定不正确吗?以下代码创建了驱动器并创建了要挂载的文件夹,并对所有驱动器进行分区、格式化和标记。但是这些文件夹不是作为挂载点创建的

$localmachine = $env:COMPUTERNAME
$csv = '\\sharedpath\disks.csv' 
foreach ($Row in (import-csv $csv | Where-Object {$_.server -eq $localmachine} )){
        $Letter = $row.Letter
        $disk1 = $Row.disk1
        $disk2 = $Row.disk2
        $disk3 = $row.disk3
        $disk4 = $row.disk4

    $label1 = $row.label1
    $label2 = $row.label2
    $label3 = $row.label3
    $label4 = $row.label4

New-Partition –DiskNumber $disk1 -DriveLetter $Letter -UseMaximumSize
Format-Volume -DriveLetter $Letter -FileSystem NTFS -NewFileSystemLabel $label1 –allocationUnitSize 65536 -Confirm:$false

New-Partition –DiskNumber $disk2 -UseMaximumSize
$part2 = Get-Partition -DiskNumber $disk2 
$accessP2 = join-path $Letter -ChildPath $label2
New-Item –itemType Directory –path $accessP2
$Part2 | Format-Volume –FileSystem NTFS -NewFileSystemLabel $label2 –allocationUnitSize 65536 –Confirm:$false
$Part2 | Add-PartitionAccessPath –AccessPath $accessP2

New-Partition –DiskNumber $disk3 -UseMaximumSize
$part3 = Get-Partition -DiskNumber $disk3 
$accessP3 = join-path $Letter -ChildPath $label3
New-Item –itemType Directory –path $accessP3
$Part3 | Format-Volume –FileSystem NTFS -NewFileSystemLabel $label3 –allocationUnitSize 65536 –Confirm:$false
$Part3 | Add-PartitionAccessPath –AccessPath $accessP3

New-Partition –DiskNumber $disk4 -UseMaximumSize
$part4 = Get-Partition -DiskNumber $disk4 
$accessP4 = join-path $Letter -ChildPath $label4
New-Item –itemType Directory –path $accessP4
$Part4 | Format-Volume –FileSystem NTFS -NewFileSystemLabel $label4 –allocationUnitSize 65536 –Confirm:$false
$Part4 | Add-PartitionAccessPath –AccessPath $accessP4

}

预期的结果是它应该以 e:\foldername 的格式将 $accessP* 值分配给 Add-PartitinAccessPath -AccessPath(如下面的 csv 文件中所列举),但是即使 $accessp* 总是返回正确的字符串值,例如e:\staging_log01 当脚本运行每次迭代的最后一行时会出错

$Part# | Add-PartitionAccessPath –AccessPath $accessP#

但如果我输入

$Part4 | Add-PartitionAccessPath –AccessPath staging_log01

有用!!!这是怎么回事?

csv文件是这样格式化的吗?字母服务器disk1 label1 disk2 Label2 disk3 Label3 E:server1 1 mount 2 STAGING_Log01 3 STAGING_System01 E:server2 1 mount 2 AGING_Log01 3 STAGING_Log01

标签: powershellcsvvariablesbulk

解决方案


推荐阅读