在注释中使用管道使用PowerShell中的Plink执行
在PowerShell中,我使用Plink将ssh连接到NetScaler设备 一切正常,但运行脚本需要很长时间,因为从远程设备下载到本地机器(我正在运行PowerShell)的数据量很大 以下是脚本:在注释中使用管道使用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"" 为了提高性能,我需要减少从设备传输的数据量。 我所需要的只是域的第一部分\
$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,只有一个idC:\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,只有一个idC:\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!