如何从PowerShell运行* .exe文件

时间:2017-05-16 16:34:42

标签: powershell invoke-command

我在C:\ Folder中有一个文件夹,其中包含input.xml,output.xml和licensegenerator.exe文件。 Licensegenerator.exe获取我们放入input.xml的变量,并使用output.xml文件为我们的某个程序创建临时许可证。我们通常通过命令行执行此操作,方法是导航到C:\ Folder目录,然后运行命令:

Invoke-Expression

我正在尝试编写一个脚本来在PowerShell中执行完全相同的操作,但我正在努力...这就是我所拥有的:

CREATE FUNCTION dbo.convttxt (@mhtztxt VARCHAR(MAX))
RETURNS FLOAT
AS
BEGIN
    DECLARE @mhtz FLOAT 

    IF (ISNUMERIC(LTRIM(RTRIM(@mhtztxt)))
        RETURN CONVERT(FLOAT, LTRIM(RTRIM(@mhtztxt))) 

    SET @mhtz = (SELECT 
                     REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE([COL1], 'xyz', 0)              
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0)
              ,'<Enter Text Here>', 0) 

                 FROM dbo.table1)

    RETURN @mhtz
END

当我运行时,我收到错误:

Invoke-Command : A positional parameter cannot be found that accepts argument
'C:\Folder\Output.xml'.
At line:5 char:1
+ Invoke-Command $licengegen "$inputtest" "$outputtest"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-Command], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeCommandCommand

我也尝试使用about:config运行,但得到完全相同的错误(除了在开头说“Invoke-Expression”)。任何人都知道我在这里做错了什么?

3 个答案:

答案 0 :(得分:3)

您正在寻找call operator

& $licensegen "$inputtest" "$outputtest"

Invoke-Command主要用于在其他主机和/或其他用户上下文中运行脚本块。

答案 1 :(得分:2)

Start-Process 很棒,因为你可以运行,重定向输出,隐藏子进程窗口等等。

Start-Process -FilePath $licensegen -Argumentlist $inputtest,$outputtest

答案 2 :(得分:1)

&安培; &#34; [path]命令&#34; [参数]

将Invoke-Command替换为&amp;