【发布时间】:2018-08-23 05:09:15
【问题描述】:
我有一个函数可以从给定商店中的所有 AP 获取数据。
Function Get-AllAP {
Write-Verbose "Function Start: Get-AllAP"
Write-Host "Getting all Access Points in Store $Store .."
Write-Host " "
Write-Verbose "Getting all APs for Store $Store"
$storeApReq = "https://cpist/webacs/api/v3/data/AccessPointDetails.json?.group=$Store"
Write-Verbose "Making request to $storeApReq"
$Global:apIdListReq = Invoke-RestMethod -uri $storeApReq -method Get -ContentType 'application/json' -headers @{ Authorization = $auth }
$Global:apIdList = $apIdListReq.queryResponse.entityId
$Global:apIdCount = $apIdListReq.queryResponse."@count"
Write-Verbose "Found $siteAPCount APs in Sites Database. $apIdCount out of $siteAPCount APs found."
Write-Verbose "Response Received: $apIdList"
$Global:apIdURL = $apIdListReq.queryResponse.entityId
$Global:apURLs = $apIdListReq.queryResponse.entityId | ForEach-Object -MemberName '@url'
Write-Verbose "Looping through APs."
$Global:apLoop = ForEach($apURL in $apURLs) {
$apFullReq = Invoke-RestMethod -uri $apURL'.json' -Method Get -ContentType 'application/json' -headers @{ Authorization = $auth }
Write-Verbose "Response: $apFullReq"
$Global:allApData = $apFullReq.queryResponse.entity.accessPointDetailsDTO
## Format ALL AP data
$apStatus =$allApData.status
$apName = $allApData.name
$apPing = $allApData.reachabilitystatus
## Format data
Write-Host $apName
Write-Verbose $apStatus
Write-Verbose $apPing
## Output data
Write-Host " "
Write-Host "AP Name: $apName"
Write-Host "AP Status: $apStatus"
Write-Host "AP Ping: $apPing"
}
## Clear
## Give option to reset AP
$doReset = Read-Host "Type 'reset' to reset all Access Points in Store $Store"
IF($doReset-eq 'reset') {
Manage-APResetStore
} else {
Repeat
}
此函数运行后,用户可以选择Repeat或使用Manage-APResetStore重置,如下所示;
Function Manage-APResetStore {
Write-Verbose "Function started: Manage-APResetStore"
## Create our batch job
ForEach($apName in $allAPData) {
Write-Host $apName
}
## Send our job
}
这是它当前输出的内容,它显示了 $allAPData 而不是 $apName 的完整 JSON。
VERBOSE: Function started: Manage-APResetStore
Establishing SSH connection to Cisco Controller dc1flexwlc02
@{@displayName=16162527426; @id=16162527426; adminStatus=ENABLE; apType=AP3500I; cdpNeighbors=; clientCount=3; clientC
ount_2_4GHz=0; clientCount_5GHz=3; ethernetMac=50:57:a8:a1:7c:38; ipAddress=10.0.126.69; locationHierarchy=Dicks Sport
ing Goods > 0026 > 1st floor; macAddress=5c:50:15:1c:43:30; mapLocation=default location; model=AIR-CAP3502I-A-K9; nam
e=0026AP5; reachabilityStatus=REACHABLE; serialNumber=FTX1611E55H; softwareVersion=8.5.131.0; status=CLEARED; type=Uni
fiedAp; unifiedApInfo=; upTime=68916194}
VERBOSE: Function start: Check-DevMode
VERBOSE: Function Start: Execute-Application
Manage-APResetStore 函数的目的是将“重置”命令列表发送到该存储中存在的每个 AP 的控制器。所以我想做的是从我的ForEach 循环中列出一个列表,我可以用它来生成一个批处理作业发送到控制器。
【问题讨论】: