Как передать массив или список в качестве параметра в функцию PowerShell?

Я пишу сценарий PowerShell, чтобы получить список сертификатов, срок действия которых истекает в течение 30 дней. Скрипт работает, но проблема в том, что слишком много приложений и прес-серверов, и я хочу минимизировать код скрипта. Моя функция:

function CheckCert($ComputerNames)
{
    $deadline = (Get-Date).AddDays($global:threshold) # Set deadline date
    Invoke-Command -ComputerName $ComputerNames { Dir Cert:\LocalMachine\My } |
        foreach {
            If ($_.NotAfter -le $deadline)
            {
                $_ | Select Issuer, Subject, NotAfter, @{Label="Expires In (Days)";Expression={($_.NotAfter - (Get-Date)).Days}}
            }
        }
}

И я называю эту функцию как:

Switch ($xMenu1)
{
    1 {CheckCert -ComputerNames "CUKIRUNCSVR0242"}
    2 {CheckCert}
    3 {CheckCert}
    ...

Я хочу передать ComputerNames, такие как serv1, serv2, serv3, и это число серверов может варьироваться от 1 до 6 в зависимости от параметра, выбранного в меню. ** ИЛИ Могу ли я определить список серверов с различными средами, передать имя списка в качестве параметра и изменить функцию CheckCert, чтобы выполнить цикл для каждого сервера и получить данные сертификата с истекшим сроком действия?

Switch ($xMenu1)
{
    1 {CheckCert -ComputerNames CIT_envList}
    2 {CheckCert -ComputerNames SIT_envList}
    3 {CheckCert -ComputerNames Prod_envList}
    ...

И их списки серверов примерно такие:

CIT_envList = serv1, serv2

SIT_envList = serv1, serv2, serv3,

PROD_envList = serv1, serv2, serv3, serv4

Ответ 1

Попробуй это:

function CheckCert([string[]]$ComputerNames)
{
    $deadline = (Get-Date).AddDays($global:threshold) # Set deadline date
    foreach ($computer in $ComputerNames)
    {
        Invoke-Command -ComputerName $Computer { Dir Cert:\LocalMachine\My } |
        foreach {
            If ($_.NotAfter -le $deadline)
            {
                $_ | Select Issuer, Subject, NotAfter, @{N="Expires In (Days)";E={($_.NotAfter - (Get-Date)).Days}}
            }
        }
    }
}