用于添加新凭证的PowerShell Scipt。

问题描述 投票:0回答:1

我想制作脚本,根据选择的组别自动分配信誉证书。我得到了很多语法错误。你能帮忙吗?

 Function Add-OSCCredential
{
    $target = Read-Host "Group number"
    If($target)
    {
        If($target -eq 1)
        {[string]$result = cmdkey /add:Group1 /user:Group1 /pass:Pass1}
        [ElseIf($target -eq 2)
        {[string]$result = cmdkey /add:Group2 /user:Group2 /pass:Pass2}]
        {
        [ElseIf($target -eq 3)
        {[string]$result = cmdkey /add:Group3 /user:Group3 /pass:Pass3}]
        {
        If($result -match "The command line parameters are incorrect")
            {Write-Error "Failed to add Windows Credential to Windows vault."}
        ElseIf($result -match "CMDKEY: Credential added successfully")
            {Write-Host "Credential added successfully."}
    }
    Else
    {
        Write-Error "Internet(network address) or username can not be empty,please try again."
        Add-OSCCredential
    }

}

Add-OSCCredential
windows powershell shell credentials
1个回答
0
投票

我建议你使用一个合适的编辑器,比如vscode,它会给你很多关于语法错误的提示。

在你的情况下,有很多 []{} 的括号中,没有任何意义。

仅考虑到该函数的语法,下面的内容应该 "可以"。

Function Add-OSCCredential {
  $target = Read-Host "Group number"
  If ($target) {
    If ($target -eq 1) {
      [string]$result = cmdkey /add:Group1 /user:Group1 /pass:Pass1
    }
    ElseIf ($target -eq 2) {
      [string]$result = cmdkey /add:Group2 /user:Group2 /pass:Pass2
    }
    ElseIf ($target -eq 3) {
      [string]$result = cmdkey /add:Group3 /user:Group3 /pass:Pass3
    }

    If ($result -match "The command line parameters are incorrect") {
      Write-Error "Failed to add Windows Credential to Windows vault."
    }
    ElseIf ($result -match "CMDKEY: Credential added successfully") {
      Write-Host "Credential added successfully."
    }
  }
  Else {
    Write-Error "Internet(network address) or username can not be empty,please try again."
    Add-OSCCredential
  }

}

编辑:

你很有可能想要研究一个现成的PowerShell模块,比如: 信任管理器,这样你就不用自己去摆弄cmdkey.exe了。


0
投票

返回的值是 Read-Host 始终是一个字符串,但在测试中你要把它当作一个整数。为了提高可读性,我建议使用 switch 宁可再来一套 if..elseif..else 语句。

就像这样

function Add-OSCCredential {
    $target = Read-Host "Enter Group number (1-3)"
    if ($target -match '1|2|3') {
        switch ([int]$target) {
            1 {[string]$result = cmdkey /add:Group1 /user:Group1 /pass:Pass1}
            2 {[string]$result = cmdkey /add:Group2 /user:Group2 /pass:Pass2}
            3 {[string]$result = cmdkey /add:Group3 /user:Group3 /pass:Pass3}
        }
        if($result -match "The command line parameters are incorrect") {
            Write-Error "Failed to add Windows Credential to Windows vault."
        }
        elseif ($result -match "Credential added successfully") {
            Write-Host "Credential added successfully."
        }
        else {
            Write-Warning $result
        }
    }
    else {
        Write-Warning "Group number must be either 1, 2 or 3. Please try again."
        Add-OSCCredential
    }
}

Add-OSCCredential
© www.soinside.com 2019 - 2024. All rights reserved.