Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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
Json 如何在哈希表中循环x数量的键并执行invoke rest方法_Json_Powershell_Csv_For Loop_Hashtable - Fatal编程技术网

Json 如何在哈希表中循环x数量的键并执行invoke rest方法

Json 如何在哈希表中循环x数量的键并执行invoke rest方法,json,powershell,csv,for-loop,hashtable,Json,Powershell,Csv,For Loop,Hashtable,我有一个问题,让脚本的工作方式,我打算,但承认我不是很好的循环一般。我试图循环我的hashtable,并为hashtable中的每500个项转换和执行invokerestmethod for ($every500 in $params) { $params1 = $params | ConvertTo-Json $params2 = '{"update"' + ":" + $($params1) + "}" Invoke-RestMethod -Uri $website

我有一个问题,让脚本的工作方式,我打算,但承认我不是很好的循环一般。我试图循环我的hashtable,并为hashtable中的每500个项转换和执行invokerestmethod

for ($every500 in $params) {
    $params1 = $params | ConvertTo-Json
    $params2 = '{"update"' + ":" + $($params1) + "}"
    Invoke-RestMethod -Uri $website -Headers $header -ContentType "application/json" -Method POST -Body $params2
}
我不太擅长for循环,我做的最后一个循环得到了很多帮助。正如你从我下面的例子中看到的,我迷失在这一切中。 到目前为止,我一直在搜索论坛,寻找一些可以指向正确方向的东西,但我没有找到。 有人能告诉我如何循环通过一个哈希表,并在每个X金额项目后执行调用吗

$params = Import-Csv C:\tesrfolder\test.csv |
ForEach-Object {         
    @{ # new hashtable here            
        stock_quantity = $_.Stock
        id             = $_.ID
        stock_status   = $_.'In stock?'
    }# output is implicit
}
$params1 = $params | ConvertTo-Json
$params2 = '{"update"' + ":" + $($params1) + "}"
# $count = $params1.count
# For ($i = $count; $i -lt 500; ) { 

# }
# foreach ($keys in $params) { $params -lt 10 }
正如你在上面所看到的,我一点也不知道我在做什么,哈哈 我通常不需要处理大量的数据,所以我从来没有真正练习过for循环,现在它开始咬我的屁股了

这就是我在尝试每500次循环之前的情况

$website = "https://www.mywebsite.com/"
$params = Import-Csv C:\testfolder\test.csv |
ForEach-Object {         
    @{ # new hashtable here            
        stock_quantity = $_.Stock
        id             = $_.ID
        stock_status   = $_.'In stock?'
    }# output is implicit
}
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("user:pass"))) 
$header = @{ 
    Authorization = ("Basic {0}" -f $base64AuthInfo);
}
$params1 = $params | ConvertTo-Json
$params2 = '{"update"' + ":" + $($params1) + "}"
Invoke-RestMethod -Uri $website -Headers $header -ContentType "application/json" -Method POST -Body $params2
我正在从CSV创建我的哈希表,我希望在$params hastable中每500个项目中实现一个,就是将这些键转换为json,然后在每个转换的表的顶部和末尾添加{“update”:然后为每个转换添加一个invoke rest方法。 在我的脑海里,我一直在想象这样的事情

for ($every500 in $params) {
    $params1 = $params | ConvertTo-Json
    $params2 = '{"update"' + ":" + $($params1) + "}"
    Invoke-RestMethod -Uri $website -Headers $header -ContentType "application/json" -Method POST -Body $params2
}
我似乎无法集中精力让它工作,我知道我错过了这个谜题的部分,我只是不知道它是什么。
任何帮助都将不胜感激

下面是一种从CSV记录样本创建哈希的方法。这并不是一个休息电话

$samples = 500
$data = Import-Csv -Path '.\stock.csv'
$n = $data.count
for ($i = 0; $i -lt [Math]::Ceiling($n/$samples); $i++) {
    $ht = @{ # new hashtable here            
        stock_quantity = $data[$i * $samples].Stock
        id             = $data[$i * $samples].ID
        stock_status   = $data[$i * $samples].'In stock?'
    }
}

您是否尝试过简单地从导入的阵列中获取500个项目?你可以使用索引,然后从每个批中构建你的哈希表。为什么需要一个哈希表?因为散列是一组键、值对,所以在散列上“循环”似乎很奇怪。散列通常是无序的。创建json需要hastable,然后上传到站点以更新信息,顺序不是必需的。只需查看散列,抓取500将其转换为json并使用invoke restmethod上载结果,然后转到散列中的下一个500以重复该过程。