如何使用 powershell routes.jason 传递正文
Posted
技术标签:
【中文标题】如何使用 powershell routes.jason 传递正文【英文标题】:How to pass the body using powershell routes.jason 【发布时间】:2022-01-07 20:47:16 【问题描述】:我正在尝试在 powershell 中使用 RestPS 路由公开端点。当端点(http://localhost:8080/scan)被命中时,我能够公开它并运行自定义 PS 脚本。
我们如何通过路由传递正文并根据我需要执行自定义脚本的值。
RestPSroutes.json - 示例
"RequestType": "GET",
"RequestURL": "/scan",
"RequestCommand": "C:/RR/api-compliance.ps1"
sn-p 来自上述脚本 (api-compliance.ps1) ;
###############
# Setup Creds #
###############
$userID = "****"
$Pass = "*****"
#$Creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $userID,$Pass
$vCenter = "vCenter01"
$cluster = "Cluster01"
$vmhost = "Host01"
$bl = "Baseline01"
######################
# Connect to vCenter #
######################
Connect-VIServer $VCTRs -user $userID -password $Pass -WarningAction SilentlyContinue -Force
$baseline = Get-Baseline | ? $_.name -eq $bl
$baseline | Attach-Baseline -Entity $vmhost -Confirm:$false
Scan-Inventory -Entity $vmhost
现在我们正在硬编码以下值
$vCenter = "vCenter01"
$cluster = "Cluster01"
$vmhost = "Host01"
但我们希望这些作为请求正文传递。有人可以帮忙吗?
【问题讨论】:
【参考方案1】:只需在目标脚本/函数中声明参数$RequestArgs
和$Body
,RestPS
就会自动将适当的值作为字符串传递:
param(
[string]$RequestArgs,
[string]$Body
)
$RequestArgs.Split('&') |ForEach-Object
$paramName,$paramValue = $_.Split('=')
Write-Host "Received query parameter $paramName with value '$paramValue'"
【讨论】:
以上是关于如何使用 powershell routes.jason 传递正文的主要内容,如果未能解决你的问题,请参考以下文章
如何在不卸载powershell的情况下,有效禁用/启用powershel