如何在PowerShell的Web请求体中使用动态月份起止日期?
PowerShell 动态生成指定格式的Web请求体
步骤1:获取当前月份的起始和结束日期(UTC格式)
先计算当前月份的第一天和最后一天,并转换为你需要的yyyy-MM-ddTHH:mm:ss+00:00格式:
# 获取当前月份第一天的UTC时间,格式化为指定样式 $currentMonthStart = (Get-Date -Day 1 -Hour 0 -Minute 0 -Second 0).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss+00:00") # 获取当前月份最后一天的UTC时间,格式化为指定样式 $currentYear = (Get-Date).Year $currentMonth = (Get-Date).Month $lastDayOfMonth = [DateTime]::DaysInMonth($currentYear, $currentMonth) $currentMonthEnd = (Get-Date -Day $lastDayOfMonth -Hour 23 -Minute 59 -Second 59).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss+00:00")
步骤2:生成请求体的三种方式
方式一:双引号字符串插值(推荐简单场景)
PowerShell中双引号字符串支持直接解析变量,只需注意转义JSON中的双引号(用两个双引号""代替单个"):
$body = "{""timePeriod"":{""from"":""$currentMonthStart"",""to"":""$currentMonthEnd""}}"
方式二:哈希表转JSON(推荐复杂场景,避免格式错误)
用哈希表构建请求结构,再转换为JSON字符串,这种方式最不容易出错,尤其适合嵌套结构的请求体:
# 构建哈希表结构 $requestBodyObject = @{ timePeriod = @{ from = $currentMonthStart to = $currentMonthEnd } } # 转换为压缩格式的JSON字符串 $body = $requestBodyObject | ConvertTo-Json -Compress
方式三:字符串拼接(不推荐,易出错)
如果用单引号字符串,就需要手动拼接变量,这种方式容易因为引号遗漏导致格式错误:
$body = '{"timePeriod":{"from":"' + $currentMonthStart + '","to":"' + $currentMonthEnd + '"}}'
验证结果
执行完上述代码后,$body的内容会自动替换为当前月份的起止日期,格式完全符合要求。
内容的提问来源于stack exchange,提问作者Jenny
相关产品推荐
相关产品推荐

