如何使用 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$BodyRestPS 就会自动将适当的值作为字符串传递:

param(
  [string]$RequestArgs,
  [string]$Body
)

$RequestArgs.Split('&') |ForEach-Object 
  $paramName,$paramValue = $_.Split('=')
  Write-Host "Received query parameter $paramName with value '$paramValue'"

【讨论】:

以上是关于如何使用 powershell routes.jason 传递正文的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 执行 PowerShell 脚本

PowerShell 5.1 - 如何卸载当前使用的模块

如何使用 C# 按组策略检查 PowerShell 禁用

如何在不卸载powershell的情况下,有效禁用/启用powershel

如何使用 Powershell 中的快照创建 Azure 托管磁盘

是否可以/如何使用某些 cmdlet 停止 powershell?