Получение Cannot конвертировать 'System.Object []' в тип 'System.Management.Automation.ScriptBlock', вызывая скрипт powershell с SQL Server - PullRequest
1 голос
/ 14 февраля 2020

Я запускаю эту команду / скрипт:

Exec xp_cmdshell 'powershell.exe Invoke-Command -ComputerName server01.client.local -ScriptBlock 
{Get-Process myguiapp -IncludeUserName ^| Format-Table @{Expression={$_.username}}, @{Expression= 
{$_.path}}, @{Expression={(((Get-Date) - $_.StartTime).ToString().Substring(0,8))}}}, @{Expression= 
{$_.FileVersion.tostring()}}'

Когда я запускаю его в powershell, он работает нормально, но когда я запускаю его в SSMS, я получаю эту ошибку:

Invoke-Command : Cannot convert 'System.Object[]' to the type 
'System.Management.Automation.ScriptBlock' required by 
parameter 'ScriptBlock'. Specified method is not supported.
At line:1 char:67
+ ... ScriptBlock {Get-Process myguiapp -IncludeUserName | Format-Table @{E ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-Command], ParameterBindingException
    + FullyQualifiedErrorId : 
CannotConvertArgument,Microsoft.PowerShell.Commands.InvokeCommandCommand

И когда я запускаю его в SSMS без последнего параметра (для FileVersion), он отлично работает:

Exec xp_cmdshell 'powershell.exe Invoke-Command -ComputerName zmcrds01.zmclient.local -ScriptBlock 
{Get-Process zmfs.gui -IncludeUserName ^| Format-Table @{Expression={$_.username}}, @{Expression= 
{$_.path}}, @{Expression={(((Get-Date) - $_.StartTime).ToString().Substring(0,8))}}}'

Я работаю на SQL Server 2014 с Powershell 5.1

Как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...