创建案例循环/开关语句类型的PowerShell函数的正确方法是什么?

绝望的N00b

由于我可能确实陷入了XY问题,因此我实际上在写一个相当大的脚本来处理Windows平台上本地和基于云的用户的用户管理。这意味着少数使用Active Directory凭据进行身份验证的本地服务,以及少数使用Azure Active Directory凭据进行基于云的服务。理想情况下,将有一组可以执行所有操作的凭据,但是我不能依靠它,这使我一直在寻找一种方法来获取大量凭据(我最多可以使用8个凭据),然后发送到Connect-[Service]我编写的适当功能。

我认为编写此函数的正确方法是使用switch语句,大致如下:

Function Get-Credentials {
    Param (
        [Parameter(Mandatory=$true)][string]$Service
    )

    $global:Service1Credentials = $null;
    $global:Service2Credentials = $null;
    ...

    switch ($Service)
    {
        Service1 { $global:Service1Credentials = Get-Credential  -Message "Credentials for [Service1]"}
        Service2 { $global:Service2Credentials = Get-Credential  -Message "Credentials for [Service2]"}
        ...
    }
}

忽略全局参数的使用(我在编写脚本时为了更好的可调试性而在这样做),这是解决为多个或十几种不同服务使用脚本获取凭据的问题的正确方法吗?我应该使用更好的方法?

盒狗

这是一个替代方案,随着开关选项的增加,该替代方案将不再那么麻烦:

function Get-SvcCred($ServiceName)
{
    return (Get-Credential  -Message "Credentials for $ServiceName")
}

$services = "Service1", "Service2", "Service3"

$creds = @{}

$services | 
    ForEach-Object {
        $creds[$_] = Get-SvcCred $_
    }

现在,您所要做的就是在添加新数组时更新$ services数组,这将正确地依次请求每个数组。额外的好处是您可以通过执行以下操作轻松地在代码的后面访问任何一组凭据:

$creds["Service1"]

显然,如果您不希望(或不需要)用户一次提供所有凭据,则只需在需要时拨打电话即可:

$creds["Service3"] = Get-SvcCred "Service3"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从函数返回的正确方法是什么?

开关案例语句中的使用方法

在Rust中为线程或函数创建超时的正确方法是什么?

join_rows()函数的正确类型是什么?

开关案例语句中的打字稿类型安全

将Variant转换为正确类型的正确方法是什么?

解决F#问题。将函数附加到类型的正确方法是什么?

为循环中多次调用的函数返回值预分配内存的正确方法是什么?

测试类型的正确方法是什么?

在VueJS的v-for循环内的数据属性上输出数学函数结果的正确方法是什么?

用带有参数的函数的返回值编写if语句的正确方法是什么?

检查开关参数的正确方法是什么

TypeScript中“设置”函数的正确类型是什么?

创建多个wx.AcceleratorEntry()条目并将函数绑定到它们的正确方法是什么?wxPython

为什么Typescript无法根据枚举开关语句来推断正确的类型?

在微风中创建复杂类型的未绑定实例的正确方法是什么?

创建复杂元素的正确方法是什么?

函数对象的正确参数类型是什么?

编写haskell函数的正确方法是什么

对案例类值实施约束的正确方法是什么

在where子句中使用案例的正确方法是什么

从颜色创建画笔的正确方法是什么?

在C中创建和初始化包含函数指针的结构的正确方法是什么?

创建预设结构的正确方法是什么?

在条件语句中检查对象类型的正确方法是什么 - python

使用 scanf 函数运行 for 循环的正确方法是什么

FOR 循环中 IF 语句的正确语法是什么?

让成员函数返回类型成为要返回的实际对象的超类的正确方法是什么?

为 Vue 道具创建类型的正确方法是什么