function - Powershell 从工作代码中生成函数
问题描述
需要您的建议,如何将脚本的一部分重新排列成函数以在脚本中调用它,以组装新的凭据。
这是一个脚本:
$vault="3.3.3.3:8500"
# Check Vault login for Tech profile
# Input Login & password
$pair = (Get-Credential)
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{Authorization = $basicAuthValue}
$rawcontent=(Invoke-WebRequest -Uri $vault -Headers $Headers).StatusCode
谁能给我一个例子,如何将这部分代码组装成函数,在输入错误凭据的情况下将其调用到 if/elseif 部分?
if ( $rawcontent -contains '200' ) { Write-Host "Technician is authenticated!" }
[ elseif ( $rawcontent -contains '400' ) {Write-Host "Bad credentials!" | # call Ask-Creds function to re-enter creds } ]
[ elseif ( $rawcontent -contains '000' ) {Write-Host "Connection failed!" | Exit 1 } ]
UPD1 - 上面的代码正在运行。我尝试根据上面的代码组装一些函数,但它没有向 $rawcontent 变量返回任何值。谁能给我一个提示,我做错了什么:
function Ask-Creds {
param(
$Credential = (Get-credential -message 'Please enter Technician`s login & password for Terminal registration:')
)
$vault="3.3.3.3:8500"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Credential))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{Authorization = $basicAuthValue}
$rawcontent=(Invoke-WebRequest -Uri $vault -Headers $Headers).StatusCode
}
Ask-Creds
echo $rawcontent #returns nothing
解决方案
根据@boxdog 的回答,我能够组装更正的函数:
function Ask-Creds {
param(
[ValidateNotNull()]
$Credential = (Get-credential -message 'Please enter Technician`s login & password for Terminal registration:')
)
$vault="3.3.3.3:8500"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Credential))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{Authorization = $basicAuthValue}
$rawcontent=(Invoke-WebRequest -Uri $vault -Headers $Headers).StatusCode
echo "$rawcontent"
}
Ask-Creds
推荐阅读
- node.js - Keyclock 令牌服务未运行
- c# - 图像在设计模式下显示,但在 WPF .net Core 项目中的运行时不显示
- python - numpy中的矩阵乘法式加法
- python - 如何从以特定日期范围为条件的现有文件创建 CSV 文件
- vim - 在 crate `rust_out` 中找不到 `main` 函数:考虑在 vim/ale 的 crate 级别添加一个 `main` 函数
- html - 始终在父母兄弟姐妹之上显示绝对位置 div
- javascript - Javascript 数组。加法、减法和求和
- html - 在不使用溢出的情况下删除移动设备上的垂直滚动
- mysql - Laravel JOIN SQLSTATE [23000] 的问题:违反完整性约束:1052 字段列表中的列 'album_id' 不明确
- azure - 从另一个管道触发 Azure Devops 管道