Проверка на установленную программу для удаленных машин не работает - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь проверить, установлена ​​ли конкретная программа на удаленном компьютере.Функция для этого прекрасно работает на локальном компьютере, но не на удаленном. Я попытался открыть сеанс и запустить функцию в этом сеансе, но не получил правильное значение.

Что я сделал не так?

Enter-PSSession $b
Is-Installed ( "BigFarmNet 3.3.0 -rc1" )
Exit-PSSession

function Is-Installed( $program ) 
{
    $installed = ""
    if ((Get-WmiObject Win32_OperatingSystem).OSArchitecture = "32-bit")
    {
        $installed = ((Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall") |
    Where-Object { $_.GetValue( "DisplayName" ) -like "*$program*" } ).Length -gt 0;
    }
    else
    {
        $installed = ((Get-ChildItem "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall") |
    Where-Object { $_.GetValue( "DisplayName" ) -like "*$program*" } ).Length -gt 0;
    }
    return $installed;
}

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Я попробовал ваш подход, но все равно получаю то же исключение

Invoke-Command -ComputerName 192.168.128.31 -ScriptBlock { Function:Is-Installed "BigFarmNet 3.3.0 -rc1" } -Credential $Cred -ArgumentList "Is-Installed"

Термин «Функция: установлен-установлен» не распознается как имя командлета, функции, файла сценария или работоспособногопрограмма.Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку.+ CategoryInfo: ObjectNotFound: (Функция: Is-Installed: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException + PSComputerName: 192.168.128.31

0 голосов
/ 26 сентября 2018

Вы не можете использовать Enter-PSSession в скрипте.Используется только в консоли.Если вы хотите использовать сеанс в скрипте, вам нужно использовать Invoke-Command

Пример

Invoke-Command -ComputerName "YourComputer" -ScriptBlock {
#YourCode
} 

Вы также можете использовать параметр -Session для invoke-command, если вы уже создалиa pssession

РЕДАКТИРОВАТЬ

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

Function Test($value) {
 Write-Host "Variable value $value"
}

Invoke-Command -ComputerName "YourComputer"  -ScriptBlock ${Function:Test} -ArgumentList "YourParameterValue"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...