У меня проблема с блоком сценариев powershell, который выполняется MIDN-сервером ServiceNow на целевом хосте.На целевом хосте запущен сервер SQL, на котором мне нужно выполнить некоторые сценарии PS, выполняющие команды SQL и опубликовать результаты процесса (в этом случае использование JDBC недопустимо).
Итак, я запускаю powershell на сервере MID (какой-топрокси, для тех, кто не знаком с ServiceNow), и мне необходимо выполнить сценарий PS с помощью команды Encoded с помощью командлета Invoke-WMIMethod ( Я не могу использовать команду Invoke-Command из-за отключенного удаленного взаимодействия PS - никакчтобы включить это из-за политики компании), как показано ниже:
$Bytes=[System.Text.Encoding]::Unicode.GetBytes($CallArgumentsBlock)
# Command block is passed as encoded command
$EncodedCommand=[Convert]::ToBase64String($Bytes)
$WMIArgs=@{
Class='win32_process'
Name='Create'
ComputerName=$computer
ArgumentList="powershell -EncodedCommand $EncodedCommand"
ErrorAction='SilentlyContinue'
Credential=$cred
}
Invoke-WmiMethod @WMIArgs | Out-Null
Проблема заключается в том, что мне нужно вставить предварительно оцененные переменные $ EncodedCommand.Пример блока скрипта:
$CallArgumentsBlock={
Param(
[string] $SQLServer = "$inputSQLServer", #SQL Server Name running on host
[string] $SQLDBName = "$inputSQLDBName", #SQL DB name
[string] $InputData = "$inputInputData", #JSON string holding data processed by PS+SQL
[string] $ResultFolderPath = "$OutputPath_forSQL" #File path where to output results cause WMI can not return output of invoked command
)
$ProcessData = ConvertFrom-JSON -InputObject $InputData
#For each object call sql...
...
*PS code*
...
}
- Так каким должен быть способ PowerShell сделать это?
- Кто-нибудь предлагает лучшее решение на основе ServiceNow?
Большое спасибо за ваши ответы!