【发布时间】:2017-12-18 04:41:16
【问题描述】:
我正在尝试使用 PowerShell 使用 CSV 执行简单的任务,但它真的不适合我。
我有这样的 CSV 文件。
名称 LineUri 状态 BusinessUnit Location 测试 1 电话:+61396176100;ext=6100 备用销售 VIC 测试 2 电话:+61396176101;ext=6101 备用销售 VIC 测试 2 电话:+61396176102;ext=6102 备用支持 NSW 测试 2 电话:+61396176103;ext=6103 Used WareHouse SA 测试 2 电话:+61396176104;ext=6104 二手销售 SA 测试 2 电话:+61396176105;ext=6105 备用支持 VIC 测试 2 电话:+61396176106;ext=6106 Spare WareHouse VIC 测试 2 电话:+61396176107;ext=6107 备用支持 VIC我正在尝试根据位置搜索状态为“备用”的 LineUri。
所以标准是这样的:
状态 = “备用” BusinessUnit = "仓库" 位置 = “维克”这应该将“tel:+61396176106;ext=6106”作为备用返回给我。
一旦我有了这个备用 LineUri,我就会执行另一个逻辑,然后将该特定 LineUri 的状态更改为“已使用”。
我有这段代码,它给了我 lineUri,但我不确定如何从 ForEach-Object 循环中取出返回值并在另一个函数中使用。
$path = Split-Path -parent $MyInvocation.MyCommand.Definition
$newpath = $path + "\PhoneData.csv"
# Array of spare numbers that meet your criteria
$firstAvailableSpare
# criteria
$currentStatus = "Spare"
$userBusinessUnit = "WareHouse"
$userLocation = "VIC"
$csv = Import-Csv $newpath -Delimiter ","
$csv | ForEach-Object {
$Status += $_.Status
$BusinessUnit += $_.BusinessUnit
$Location += $_.Location
if (($_.Status -eq $currentStatus) -and ($_.BusinessUnit -eq $userBusinessUnit) -and ($_.Location -eq $userLocation)) {
$firstAvailableSpare = $_ # Assign the first
break # break the loop so we don't get additional hits
}
}
try {
#use the return value and update the csv so that its status is changed to Used
} catch {
#do something else if failed
}
【问题讨论】:
标签: powershell csv scripting powershell-2.0 export-to-csv