1
私はPowerShellを使用してCSVで単純なタスクを実行しようとしていますが、実際には機能しません。PowerShellでCSVを検索する
私はこのようなCSVファイルを持っています。
Name LineUri Status BusinessUnit Location Test 1 tel:+61396176100;ext=6100 Spare Sales VIC Test 2 tel:+61396176101;ext=6101 Spare Sales VIC Test 2 tel:+61396176102;ext=6102 Spare Support NSW Test 2 tel:+61396176103;ext=6103 Used WareHouse SA Test 2 tel:+61396176104;ext=6104 Used Sales SA Test 2 tel:+61396176105;ext=6105 Spare Support VIC Test 2 tel:+61396176106;ext=6106 Spare WareHouse VIC Test 2 tel:+61396176107;ext=6107 Spare Support VIC
ロケーションに基づいてステータスが「予備」であるLineUriを検索しようとしています。
ので基準は、次のようになります。
Status = "Spare" BusinessUnit = "WareHouse" Location = "VIC"
これは私を返す必要があります "TEL:61396176106; EXT = 6106" スペアとして。
このスペアLineUriを取得すると、別のロジックが実行され、その特定のLineUriのステータスが「Used」に変更されます。
私は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
}
しかし、私はこの回線URIを使用したら、どのように私はそのLineUriのステータスを更新してください。.. –
あなたは私がどのように知らせてくださいすることができ返されたLineUriのステータスを更新できます –
だから私は$ csv | Export-Csv -Path $ newpath -NoTypeInformation、私はまだスペアとしてそのLineUriを取得します –