none
PowerShell скрипт в SC Orchestrator 2016 RRS feed

  • Вопрос

  • Добрый день

    В SC Orchestrator 2016 дефолтная версия PoSh`a 2 при чем 32 битная

    Мне нужно выполнить скрипт (довольно большой) используя параметры пришедшие из вне (из предыдущего блока в ранбуке), в качестве примера будет использоваться $Param

    Если выполнить скрипт через SCO 2016

    "Default PowerShell Version $($host.Version.Major) $([IntPtr]::Size * 8) bit process" | Out-File C:\temp\test.log -append
    $Param = 'test'
    C:\Windows\SysNative\WindowsPowerShell\v1.0\PowerShell.exe -command {
    	"+++++++++++" | Out-File C:\temp\test.log -append
    	$Param | Out-File C:\temp\test.log -append
    	"PowerShell Version $($host.Version.Major) $([IntPtr]::Size * 8) bit process" | Out-File C:\temp\test.log -append
    	"-----------" | Out-File C:\temp\test.log -append
    }
    

    получим такой вывод

    > Default PowerShell Version 2 32 bit process > +++++++++++
    > <Тут хотелось бы увидет значение из $Param но не могу смекнуть как это сделать> > PowerShell Version 4 64 bit process > -----------

    Есть статьи и статейки по поводу того что нужно использовать Invoke-Command, но в таком контексте получается 64 битный PowerShell версии

    Вопрос в том как засунуть параметр внутрь

    C:\Windows\SysNative\WindowsPowerShell\v1.0\PowerShell.exe -command {...}




    The opinion expressed by me is not an official position of Microsoft

    21 февраля 2017 г. 10:49
    Модератор

Ответы

Все ответы

  • контексте получается 64 битный PowerShell  версии - Версия хоста, а не PowerShell. Для получения версии - $PSVersionTable . 

    $Param = 'test'
    $sb = [scriptblock]::Create(
    @"
    "+++++++++++" | Out-File C:\temp\test.log -append
    	"$Param" | Out-File C:\temp\test.log -append
    	"PowerShell Version $($host.Version.Major) $([IntPtr]::Size * 8) bit process" | Out-File C:\temp\test.log -append
    	"-----------" | Out-File C:\temp\test.log -append
    "@
    )
    
    C:\Windows\SysNative\WindowsPowerShell\v1.0\PowerShell.exe -command $sb

    21 февраля 2017 г. 11:03
    Отвечающий
  • 21 февраля 2017 г. 11:04
  • оно?

    или это

    Оба линка по сути говорят про одно и тоже - используйте Invoke-Command и будет счастье, но в моем случае счастье не наступает. Получаю $Host.Version = 1 и в этом контексте мой скрипт не работает.

    The opinion expressed by me is not an official position of Microsoft

    21 февраля 2017 г. 11:31
    Модератор
  • $Host.Version = 1 - Версия хоста, но не PowerShell. Без скрипта и ошибок, бессмысленно рассуждать, что не работает.
    PS > $host.Version
    
    Major  Minor  Build  Revision
    -----  -----  -----  --------
    5      1      14393  693
    
    
    PS > Enter-PSSession $env:COMPUTERNAME
    [PC]: PS > $host.Version
    
    Major  Minor  Build  Revision
    -----  -----  -----  --------
    1      0      0      0
    
    
    [PC]: PS > $PSVersionTable
    
    Name                           Value
    ----                           -----
    PSVersion                      5.1.14393.693
    PSEdition                      Desktop
    PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
    BuildVersion                   10.0.14393.693
    CLRVersion                     4.0.30319.42000
    WSManStackVersion              3.0
    PSRemotingProtocolVersion      2.3
    SerializationVersion           1.1.0.1
    

    21 февраля 2017 г. 11:37
    Отвечающий
  • $Host.Version = 1 - Версия хоста, но не PowerShell. Без скрипта и ошибок, бессмысленно рассуждать, что не работает.

    Eсть мега софтина широко известная в узких кругах (сторонняя СRM).

    Скрипт обращается к CRM и выгребает инфу. Руками все работает четко. Через SCO получаю сообщение вида: "You cannot call a method on a null-valued expression."

    Без указания конкретной строки в которой возникает ошибка. Можно приблизительно оттрекать по косвенным признакам



    The opinion expressed by me is not an official position of Microsoft

    21 февраля 2017 г. 11:56
    Модератор
  • Enter-PSSession $env:computerName - построчно выполнить скрипт, для получения ошибки
    • Помечено в качестве ответа Vector BCOModerator 21 февраля 2017 г. 14:12
    21 февраля 2017 г. 12:04
    Отвечающий
  • Неудобное окно для скриптов в SCO и кривые руки сделали свое дело. Потерялась часть скрипта при копировании из ISE в SCO

    В результате нашли ошибку и поправили, в результате через Invoke-Command все работает


    The opinion expressed by me is not an official position of Microsoft


    21 февраля 2017 г. 14:15
    Модератор