gpt4 book ai didi

powershell - 作用于数组的每100个元素

转载 作者:行者123 更新时间:2023-12-03 00:28:04 25 4
gpt4 key购买 nike

我正在使用Get-ADComputer返回Active Directory中的所有计算机。

我们打算调用DELL保修Web服务API并检索每台计算机的保修信息。

DELL保修Web服务采用管道分隔的服务标签列表,最多100个,我们有1483台计算机...

因此,我需要对代码填充的数组的每100个元素进行操作,但是遇到了麻烦。

clear-host

$Counter=0
$ServiceTag::Empty
$ServiceTagsMasterList=@()

(Get-ADComputer `
-properties OperatingSystem -filter {(operatingsystem -like "*Windows 7*")} `
|Where-Object {$_.name -like "*-*"}`
|Where-Object {$_.name -NotLike "V7-*"})`
| Select -Exp Name|ForEach-Object{
$ServiceTag = $_.substring(3) #remove w7- l7- etc....

if ($ServiceTag.Length -eq "7"){

#write-host "service tag:" $ServiceTag
$ServiceTagsMasterList += $ServiceTag + ','
$Counter+=1
}
}
write-host $ServiceTagsMasterList.length, $Counter, $Counter % 100
write-host $ServiceTagsMasterList

我在正确设置 Mod时遇到问题-我希望 $Counter % 100返回14,余数为83,但是输出为 1483%100

我需要能够为每100个服务标签块调用DELL保修api,所以我可以那样做或者拆分数组?

最好的方法是什么?

最佳答案

gpunktschmitz already mentioned您的代码有什么问题。这是您的批处理的样子:

$computer = Get-ADComputer -properties OperatingSystem -filter {(operatingsystem -like "*Windows 7*")} |
Where-Object {$_.name -like "*-*"} |
Where-Object {$_.name -NotLike "V7-*"} |
Select-Object -Expand

for ($i = 0; $i -lt $computer.length; $i+=100)
{
$computer | Select-Object -Skip $i -First 100 | ForEach-Object {
# your code here
}
}

这是您的1483台计算机的示例:
$computer = 1 .. 1483  | ForEach-Object { "DellPc$($_)" }

for ($i = 0; $i -lt $computer.length; $i+=100)
{
$computer | Select-Object -Skip $i -First 100 | ForEach-Object {
Write-Host "batch: $i computer: $_"
}
}

关于powershell - 作用于数组的每100个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48702345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com