在注释中使用管道使用PowerShell中的Plink执行

在注释中使用管道使用PowerShell中的Plink执行,shell,powershell,ssh,plink,Shell,Powershell,Ssh,Plink,在PowerShell中,我使用Plink将ssh连接到NetScaler设备 一切正常,但运行脚本需要很长时间,因为从远程设备下载到本地机器(我正在运行PowerShell)的数据量很大 以下是脚本: $log = C:\plink.exe -batch -l User -pw PWD 10.1.1.1 "shell "zgrep -oE '\w+\.some\.com' /var/log/ns.log.0.gz"" 为了提高性能,我需要减少从设备传输的数据量。 我所需要的只是域的第一部分\

在PowerShell中,我使用Plink将ssh连接到NetScaler设备

一切正常,但运行脚本需要很长时间,因为从远程设备下载到本地机器(我正在运行PowerShell)的数据量很大

以下是脚本:

$log = C:\plink.exe -batch -l User -pw PWD 10.1.1.1 "shell "zgrep -oE '\w+\.some\.com' /var/log/ns.log.0.gz""
为了提高性能,我需要减少从设备传输的数据量。
我所需要的只是域的第一部分
\w+\
,所以我尝试添加
|cut–d.–f 1
但我知道:

cut:术语“cut”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
第1行字符:144
+ ... 地狱“zgrep-oE'\w+\.some\.com'/var/log/ns.log.0.gz|cut-d.-f。。。
+                                                               ~~~
+CategoryInfo:ObjectNotFound:(剪切:字符串)[],CommandNotFoundException
+FullyQualifiedErrorId:CommandNotFoundException
我尝试了不同的方法来转义
|
,并使用
–m
开关将命令放入变量或文件中

一切结果都是一样的

当我使用PuTTY以ssh方式连接到设备时,
cut
命令运行良好

PowerShell、Plink或两者都有问题吗?我可以在没有管道的情况下使用
cut
命令吗?或者是否有其他方法仅返回
\w+\
零件

以下是各种尝试的输出,以使
剪切
工作(不允许上传工作截图)

更新 @马丁: 当我尝试

"shell `"zgrep -oE '\w+\.some\.com' /var/log/ns.log.0.gz | cut -d . -f1`"`nexit`n" | C:\NetScalerBackup\plink.exe -batch -l $un -pw $pwd $PrimaryNS
我得到:

shell "zgrep -oE '\w+\.some\.com' /var/log/ns.log.0.gz | cut -d . -f1"
exit


Done
> shell "zgrep -oE '\w+\.some\.com' /var/log/ns.log.0.gz | cut -d . -f1"
grep: unknown directories method
ERROR: 
> exit
Bye!
如果我去掉后面的引号(`)

以下是回应:

Done
> shell zgrep -oE '\w+\.aramco\.com' /var/log/ns.log.0.gz | cut -d . -f1
                                                            ^^^
ERROR: No such command
> exit
Bye!

Plink不需要外部引号,只会使解析复杂化。这应该起作用:

$log=C:\plink.exe-batch-l User-pw PWD 10.1.1 shell“zgrep-oE'\w+\.some\.com'/var/log/ns.log.0.gz | cut-d.-f”
如果要保留外部引号,则必须转义内部引号:

$log=C:\plink.exe-batch-l User-pw PWD 10.1.1.1“shell`”zgrep-oE'\w+\.some\.com'/var/log/ns.log.0.gz|cut-d-f`“

Plink不需要外部引号,只会使解析复杂化。这应该起作用:

$log=C:\plink.exe-batch-l User-pw PWD 10.1.1 shell“zgrep-oE'\w+\.some\.com'/var/log/ns.log.0.gz | cut-d.-f”
如果要保留外部引号,则必须转义内部引号:

$log=C:\plink.exe-batch-l User-pw PWD 10.1.1.1“shell`”zgrep-oE'\w+\.some\.com'/var/log/ns.log.0.gz|cut-d-f`“

我无法想象,你怎么会在
-m
上遇到同样的问题。我无法想象,你怎么会在
-m
上遇到同样的问题。这是同样的问题。在
|
PowerShell之后放置的任何内容都认为需要运行该命令。是否有一种替代使用
|
的方法适合我。向我们显示带命令和(错误)输出的PowerShell控制台屏幕截图。无法上载工作中的屏幕截图。希望我对这个问题所做的更新是可读的。根据我的建议,尝试显示“C:\NetScalerBackup\plink.exe:错误:没有这样的命令”-没有提到PowerShell在管道方面有问题。错误消息可能来自服务器,因此您更进一步。向我们展示PuTTY会话的副本,您在其中执行相同的命令。从PuTTY,只有一个id
C:\NetScalerBackup\plink.exe-batch-l$un-pw$pwd$PrimaryNS shell“zgrep-oE'\w+\.some\.com'/var/log/ns.log.0.gz | cut-d.-f1”
这是相同的问题。在
|
PowerShell之后放置的任何内容都认为需要运行该命令。是否有一种替代使用
|
的方法适合我。向我们显示带命令和(错误)输出的PowerShell控制台屏幕截图。无法上载工作中的屏幕截图。希望我对这个问题所做的更新是可读的。根据我的建议,尝试显示“C:\NetScalerBackup\plink.exe:错误:没有这样的命令”-没有提到PowerShell在管道方面有问题。错误消息可能来自服务器,因此您更进一步。向我们显示PuTTY会话的副本,您在其中执行相同的命令。从PuTTY,只有一个id
C:\NetScalerBackup\plink.exe-batch-l$un-pw$pwd$PrimaryNS shell“zgrep-oE'\w+\.some\.com'/var/log/ns.log.0.gz|cut-d.-f1”
"shell zgrep -oE '\w+\.some\.com' /var/log/ns.log.0.gz | cut -d . -f1`nexit`n" | C:\NetScalerBackup\plink.exe -batch -l $un -pw $pwd $PrimaryNS
Done
> shell zgrep -oE '\w+\.aramco\.com' /var/log/ns.log.0.gz | cut -d . -f1
                                                            ^^^
ERROR: No such command
> exit
Bye!