SPe*_*aza 1 parameters powershell function parameter-passing
我有一个我无法弄清楚的问题.这是一个无法解决的语法问题.假设我有这个功能:
function putStudentCourse ($userName, $courseId)
{
$url = "http://myurl/learn/api/public/v1/courses/courseId:" + $courseId + "/users/userName:" + $userName
$contentType = "application/json"
$basicAuth = post_token
$headers = @{
Authorization = $basicAuth
}
$body = @{
grant_type = 'client_credentials'
}
$data = @{
courseId = $courseId
availability = @{
available = 'Yes'
}
courseRoleId = 'Student'
}
$json = $data | ConvertTo-Json
$putStudent = Invoke-RestMethod -Method Put -Uri $url -ContentType $contentType -Headers $headers -Body $json
return $json
}
Run Code Online (Sandbox Code Playgroud)
然后我的主要方法:
#MAIN
$userName = "user02";
$courseId = "CourseTest101"
$output = putStudentCourse($userName, $courseId)
Write-Output $output
Run Code Online (Sandbox Code Playgroud)
现在它只是返回第一个值($ userName),但输出显示如下:
{
"availability": {
"available": "Yes"
},
"courseRoleId": "Student",
"courseId": null
}
Run Code Online (Sandbox Code Playgroud)
不知怎的,$ courseId永远不会被填满,我不知道为什么.我究竟做错了什么?任何帮助将不胜感激.
这是一个语法问题.在定义函数时,您将参数放在括号中,正如您在此处正确执行的操作:
function putStudentCourse ($userName, $courseId)
Run Code Online (Sandbox Code Playgroud)
但是,当你调用一个函数,你就没有将这些参数在括号中.将您的代码更改为如下所示:
$output = putStudentCourse $userName $courseId
Run Code Online (Sandbox Code Playgroud)
powershell解释器解释原始代码
$output = putStudentCourse($userName, $courseId)
Run Code Online (Sandbox Code Playgroud)
意思是"创建一个($ userName,$ courseId)列表,并将其作为putStudentCourse的第一个参数传递."
| 归档时间: |
|
| 查看次数: |
12858 次 |
| 最近记录: |