Я пишу сценарий 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