Я пытаюсь посчитать несколько строк, выводимых командой. В основном все строки, заканчивающиеся на «Y» в этом примере.
Fist Захват результатов команды:
PS> $ItsAgents = tacmd listSystems -n Primary:SomeHost:NT
PS> $ItsAgents
Managed System Name Product Code Version Status
Primary:SomeHost:NT NT 06.30.07.00 Y
SomeHost:Q7 Q7 06.30.01.00 N
Теперь посчитайте онлайн:
PS> $AgentCount = ($ItsAgents | Select-String ' Y ').Count
PS> $AgentCount
1
Теперь, когда все работает, как я ожидаю. Поэтому я добавил это в свой сценарий так:
$ItsAgents = tacmd listSystems -n $agent
Write-Host $ItsAgents
$BeforeCount = ($ItsAgents | Select-String ' Y ').Count
И когда скрипт запускается (под Set-StrictMode
), я получаю:
The property 'Count' cannot be found on this object. Verify that the
property exists.
At Y:\Scripts\newMoveAgents.ps1:303 char:7
+ $BeforeCount = ($ItsAgents | Select-String ' Y ').Count
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], PropertyNotFoundException
+ FullyQualifiedErrorId : PropertyNotFoundStrict
Write-Host
выводит вменяемые результаты, поэтому $agent
настроен правильно и команда tacmd
работает нормально.
Так почему же он не работает в сценарии, но работает в командной строке?