Если команда существует, функция вызова, Else Write-Host Message - PullRequest
0 голосов
/ 10 июля 2019

Я знаю, что вы можете использовать Get-Command, чтобы проверить, существует ли командлет. Однако предположим, что у вас есть сотни командлетов, которые вы будете проверять, существуют ли они. В рамках этой проверки существования, если командлет существует, он выполняется (в приведенном ниже примере вызовите командлет и просто экспортируйте результаты в csv). Если командлет не существует, сообщение пишется через Write-Host. Пример приведен ниже.

 if (Get-Command "Get-HostedOutboundSpamFilterPolicy" -errorAction SilentlyContinue)
    {
        Get-HostedOutboundSpamFilterPolicy | Export-Csv "C:\HostedOutboundSpamFilterPolicy.csv" -NoTypeInformation 
    }
    else
    {
        Write-Host "Get-HostedOutboundSpamFilterPolicy Not Found"
    }

Можно ли написать это более эффективно, чтобы избежать уродливого / длинного if / else?

1 Ответ

0 голосов
/ 10 июля 2019

Если у вас есть список имен команд, вы можете просто зациклить их:

# Could be $commands = Get-Content commands.txt
$commands = "Get-HostedOutboundSpamFilterPolicy","Get-HostedInboundSpamFilterPolicy","SomeOtherCmdlet"

foreach($commandName in $commands){
  if($command = Get-Command $commandName -ErrorAction SilentlyContinue){
    & $command |Export-Csv "${commandName}.csv"
  }
  else {
    Write-Host "$commandName not found!"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...