我在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”)。任何人都知道我在这里做错了什么?
答案 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;