我正在编写PowerShell脚本,以获取30天内过期的证书列表。该脚本正在运行,但是问题在于应用程序和Pres服务器太多,我想最小化脚本代码。我的职能是:
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}
...
我想传递诸如serv1,serv2,serv3之类的ComputerName,并且服务器数量的这一范围从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
试试这个:
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}}
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句