我在ssh上运行powershell脚本作为ssh user@host "powershell -Comand - < script.ps1
。它像预期的那样工作,直到我开始传递参数。
当我将其设置为powershell -Command - my args
时,它会失败(如文档所示)'-' was specified with the -Command parameter; no other arguments to -Command are permitted.
而powershell my args -Command -
的另一种方式则失败,并导致:
The term 'my' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included
, verify that the path is correct and try again.
At line:1 char:3
+ my <<<< args -Command -
+ CategoryInfo : ObjectNotFound: (my:String) [], CommandNotFoundE
xception
+ FullyQualifiedErrorId : CommandNotFoundException
字符串
我打算在没有任何解析的情况下放入任意参数列表。
编辑:
当我进一步调查时,似乎我做错了什么,即使显式指定了命令:
(local bash) $ echo '\n' | ssh -i master-key [email protected] '$SYSTEMROOT/System32/WindowsPowerShell/v1.0/powershell' -Command 'Write-Host \$\(\$args.Count\)' "my" "args"
0 my args
型
似乎没有传递参数,但由于某种原因,它们会打印在控制台上。避免ssh似乎不会改变任何东西:
(cygwin) $ $SYSTEMROOT/System32/WindowsPowerShell/v1.0/powershell -Command 'Write-Host $($args.Count)' "my" "args"
0 my args
型
2条答案
按热度按时间rseugnpd1#
你不能直接这样做,但我认为这是可以做到的,如果你把你的脚本 Package 在scriptblock中并传递参数给它:
字符串
由于
-Command
参数不能处理多行字符串,有一种方法可以使用-EncodedCommand
参数的Base64编码值来传递它(尽管不是通过标准输入),但它很难看:型
snz8szmq2#
这一个工作如预期:
字符串
产出:
型