Можем ли мы запустить предприятие из PowerShell? - PullRequest
0 голосов
/ 26 апреля 2019

Я хочу запустить файл FME.fmw из файла PowerShell.ps1. Я знаю, что могу сделать это из партии с помощью команды fme C:\Path\of\fmw но я не нахожу способ сделать это с PowerShell. Start-Process откроет только FME и не запустит

$repertory_source = Read-Host "Path of file ? (X:\X\X.fmw)"
start-process -FilePath $repertory_source

Я хочу запустить FME.fmw без необходимости открывать FME workbench.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Разрешение пользователям вручную вводить возможно более длинный путь подвержено ошибкам IMO и НЕ удобно для пользователя.

Я предлагаю использовать OpenFileDialog, предварительно снабженный типом файлов и начальным каталогом.

## Q:\Test\2019\04\26\SO_55862942.ps1

Function Get-FileName($StartHere=[Environment]::GetFolderPath("MyDocuments")){
    Add-Type -AssemblyName System.Windows.Forms
    $OFD = New-Object System.Windows.Forms.OpenFileDialog
    $OFD.Title = "Please select fme file"
    $OFD.InitialDirectory = $StartHere
    $OFD.Filter = "fme workspace files (*.fmw)|*.fmw|fme parameter files (*.par)|*.par|All files (*.*)|*.*"
    $OFD.Multiselect = $False
    $OFD.ShowDialog() | Out-Null

    Get-Item $OFD.FileName
}

$FME = "C:\Program Files\fme\fme.exe"

$SelectedFile = Get-FileName  # -StartHere X\Path\  # optionally pass another Starting Directory

switch ($SelectedFile.Extension) {
    '.fmw' {& $FME "$($SelectedFile.FullName";Break}
    '.par' {& $FME PARAMETER_FILE "$($SelectedFile.FullName";Break}
    default {pause "[$_] Select a valid fme file, press enter to continue";break}
}
0 голосов
/ 26 апреля 2019

Существует прямой способ вызова файла FMW и соответствующей передачи аргументов.Ниже приведены подробные сведения.

FME можно запустить из командной строки в Windows: при открытии окна командной строки и вводе FME отображается полный список параметров, отображаемых ниже.

Команда FME.fmw запустит определенную рабочую область.Поэтому, если рабочие пространства FME можно вызывать из командной строки, ряд рабочих областей (или одно и то же рабочее пространство с разными наборами данных) можно вызывать из пакетного файла DOS (.bat).

Использование

fme <controlFile> [<keyword> <value>]* [--<macroName> <value>]*
fme <scriptfile> [<scriptArgument>*]
fme <licenseFile>.fmelic
fme <command> <arguments>
where:
<controlFile> is one of <mappingFile>.fme or <workspace>.fmw
<scriptFile> is one of <tclScript>.tcl or <pythonScript>.py
<command> is one of:

Аргументы имени команды


GENERATE <sourceType> <destType> <sourceDataset> <controlFile> [<keyword> <value>]*
PARAMETER_FILE <parameterFile>
COMMAND_FILE <commandFile>
REGISTER_SOCKET <hostName> <service> [serverConfigFile] [-<ServerParmName> <ServerParmValue>]*
CREATE_SOCKET <service> [serverConfigFile] [-<ServerParmName> <ServerParmValue>]*
GENTRANS [<keyword> <value>]* <parameterFile>
GENTRANS [<keyword> <value>]* <sourceType> <sourceDataset> <destType> <destDataset>
LIST_TRANSFORMERS [VERBOSE]
LIST_UNLICENSED_TRANSFORMERS
LIST_FACTORIES
LIST_FUNCTIONS
PROTECT <sourceFile> <destFile>

Ссылочная ссылка Метод пакетной обработки

...