Ich schreibe Powershell-Skript, um eine Liste von Zertifikaten zu erhalten, die innerhalb von 30 Tagen abgelaufen sind. Das Skript funktioniert, aber das Problem ist, dass es zu viele App- und Pres-Server gibt und ich den Script-Code minimieren möchte. Meine Funktion ist:Wie übergeben Array oder Liste als Parameter in Powershell-Funktion?
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}} }
}
}
und ich rufe diese Funktion wie:
Switch ($xMenu1)
{
1 {CheckCert -ComputerNames "CUKIRUNCSVR0242"}
2 {CheckCert}
3 {CheckCert}
...
Was ich will, ist: Ich möchte ComputerNames wie serv1, SERV2, SERV3 und diese Anzahl von Servern cound passieren variieren von 1 bis 6, abhängig von der gewählten Option im Menü. OR Kann ich eine Liste von Servern verschiedener Umgebungen definieren und den Listennamen als Parameter übergeben und meine CheckCert-Funktion so ändern, dass sie für jeden Server durchlaufen wird und die abgelaufenen Zertifikatsdetails erhält ???
Switch ($xMenu1)
{
1 {CheckCert -ComputerNames CIT_envList}
2 {CheckCert -ComputerNames SIT_envList}
3 {CheckCert -ComputerNames Prod_envList}
...
und es Server-Listen sind ungefähr wie:
CIT_envList = serv1, SERV2
SIT_envList = serv1, SERV2, SERV3,
PROD_envList = serv1, SERV2, SERV3, serv4