powershell - Powershell - 提取特定字符串
问题描述
我需要从一个 API 调用中获取一个令牌,以便在另一个 API 调用中使用它。
我试图以某种方式提取 access_token 部分,将其定义为我在第二次调用中使用的变量。
我的命令:
Invoke-RestMethod -Uri $URI_TOKEN -Method Post -Headers $HEADERS_TOKEN -Body $BODY_TOKEN | Select-String -pattern access_token
输出:
@{access_token=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI4dDdPZUhRa1prall4SW1NWko3YVROanFMeW11WngwNWhvWTBxekxBbk1jIn0.eyJleHAiOjE2MTI4Mjg0OTMsImlhdCI6MTYxMjgyODQzMywianRpIjoiZGZkNTY5ZGUtYWUyZ
i00NDRhLTk0NTgtNzY2NWYwN2UzZjkyIiwiaXNzIjoiaHR0cHM6Ly92ZXJpZmljYXRpb24taWFtLXdydS50ZWxpdGNhYXNtZ210LnQtaW50ZXJuYWwuY29tL2F1dGgvcmVhbG1zL21hc3RlciIsInN1YiI6IjMwZjIyZDFhLTYxZTQtNGM5YS05OGU1LTU0MjhmZWM1M
zViMiIsInR5cCI6IkJlYXJlciIsImF6cCI6ImFkbWluLWNsaSIsInNlc3Npb25fc3RhdGUiOiI4NjRlODYxNi00NTJlLTRiNGItYjBkMC1kMjIxYjEwNDA5OWUiLCJhY3IiOiIxIiwic2NvcGUiOiJwcm9maWxlIGVtYWlsIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlL
CJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhZG1pbiJ9.Kz4zsCKyFFrvxm4ZLaf-pE2iDQOFF_Y_HPSTWslVBKqu9QnMaPVQINWENvcydP5SKg4ABza3OGkLreBhPmfeDGupRVIQNU5h4C5AewbVcNke1Drvi2CE3nEopqigIYE1Ab_GwovXT8MuXt1NTbpPtLgnjVuj-Q4P
pHKvdtHomf_DY1PTR9aFQ6CLohHmLEjBiOtOcnce0r6ZI_--XFDL81UkOOEW062LMYqyUV-jb8uRjlbUuKWHdUKnlr2H_bQNFQ5vVvi0BgevDrBc6E4oECiMnpIVFitXVIF6ZtPhKT-lyGkyZ7oaXERT-v_AcQLy2-t-cscsd0bGCL2zbUOELw; expires_in=60; r
efresh_expires_in=1800; refresh_token=eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJlNTkxZWEyZC1jMDM1LTQ4YWUtYWY0Yi0wYjc1ZGY4YzA5ZmIifQ.eyJleHAiOjE2MTI4MzAyMzMsImlhdCI6MTYxMjgyODQzMywianRpIjoiMTA
wNjZhYWYtMGIzNC00MTBjLWI2MTItNmFmNDI5NjAwNDQ2IiwiaXNzIjoiaHR0cHM6Ly92ZXJpZmljYXRpb24taWFtLXdydS50ZWxpdGNhYXNtZ210LnQtaW50ZXJuYWwuY29tL2F1dGgvcmVhbG1zL21hc3RlciIsImF1ZCI6Imh0dHBzOi8vdmVyaWZpY2F0aW9uLWl
hbS13cnUudGVsaXRjYWFzbWdtdC50LWludGVybmFsLmNvbS9hdXRoL3JlYWxtcy9tYXN0ZXIiLCJzdWIiOiIzMGYyMmQxYS02MWU0LTRjOWEtOThlNS01NDI4ZmVjNTM1YjIiLCJ0eXAiOiJSZWZyZXNoIiwiYXpwIjoiYWRtaW4tY2xpIiwic2Vzc2lvbl9zdGF0ZSI
6Ijg2NGU4NjE2LTQ1MmUtNGI0Yi1iMGQwLWQyMjFiMTA0MDk5ZSIsInNjb3BlIjoicHJvZmlsZSBlbWFpbCJ9.fwY1IUnWkS-pMzy_-pBiqch4dL4eLMvCPSKaAsGeqqw; token_type=bearer; not-before-policy=0; session_state=864e8616-452e-4
b4b-b0d0-d221b104099e; scope=profile email}
此输出包含我不需要的项目。是否可以提取以 access_token=blahblah 开头的字符串,直到;
只有符号(基本上直到 expires_in=60)?
提前谢谢了!
解决方案
由于您已证明 的输出Invoke-RestMethod
是 PSCustomObject,您可以通过执行以下操作简单地引用 access_token 属性:
$token = (Invoke-RestMethod -Uri $URI_TOKEN -Method Post -Headers $HEADERS_TOKEN -Body $BODY_TOKEN).access_token
推荐阅读
- c - 如何使用 MPI 在 C 中对二维数组求和
- python - 负载侦听器上的 Discord.py Cog
- android - 下载图片的最佳方法:Glide vs URL().openStream()
- javascript - (反应)隐藏在图像后面的滑动/粘性导航栏?
- c - 通过scanf获取多个字符串
- video - 来自社交共享的虚荣 URL 的内嵌视频播放/预览
- matlab - MATLAB 中固定大小的输出数据
- typescript - 需要抽象属性的抽象类
- python - Python 请求控制响应
- datetime - Power BI DAX:从 SELECTEDVALUE 日期时间中减去一小时