Powershell invoke-command vs -computerName 效率比较

简介:

豆子一直以来都有一个认识误区,一直认为powershell远程操作的时候,如果某个命令自带了-computername的参数,那么就用他好了,这个自带的肯定效率比 我用invoke-command远程调用强。今天无意翻了翻课本,才发现这个认识是错误的!我居然带着这种错误的认识写了1年的脚本~j_0041.gif


豆子实际验证了一下,比如我查询5个计算机最新的200条日志记录,下面两条语句都能获得类似的结果。

1
2
3
Get-Eventlog  -ComputerName sydit01,sydav01,sydwsus,melfs01,melfs02 -LogName application -newest 200
  
invoke-command  -ComputerName sydit01,sydav01,sydwsus,melfs01,melfs02 -ScriptBlock{ get-eventlog  -LogName application -newest 200}


我可以用measure-command来估算一下执行时间,看看区别果然很明显。第一条命令使用自带的-computerName 花了35秒,第二条命令花了11秒,几乎是3倍多的区别


wKioL1bWdkiBGDSyAAAv7n0RubI560.png

wKioL1bWdlOwYUN_AAA3EncTsG8844.png


为什么会这样呢?

简单的说下区别,如果使用自带的-computerName,所有的命令都是按照计算机的顺序依次执行,类似foreach的效果,而invoke-command可以同时默认操作32台计算机;


第二个重要的区别是前者没有使用winrm服务,而是使用.net的某协议,而这些协议有可能被防火墙所屏蔽。


第三个重要区别是前者不会显示pscomputername 的属性,所有的结果出来你很难区分是从哪里来的;而后者可以轻松区别数据来自哪台计算机;


第四点,如果我在管道后面通过where-object进行过滤,前者会把所有结果一股脑传回本机,然后过滤;而后者可以在scriptblock里面进行过滤之后再传回结果。这个很类似-filter 和 where-object的区别了。


综上所述,一般情况下,使用invoke-commnad效率要高多了。










本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1746701,如需转载请自行联系原作者

目录
相关文章
|
4月前
|
Java
cmd执行java程序,提示:Javac不是内部命令或外部命令~
cmd执行java程序,提示:Javac不是内部命令或外部命令~
26 0
|
28天前
|
Shell Linux C语言
Linux中执行Shell的函数(popen,system,exec)介绍:分享一些常用的执行Shell的函数及其相关编程技巧和经验
Linux中执行Shell的函数(popen,system,exec)介绍:分享一些常用的执行Shell的函数及其相关编程技巧和经验
30 0
|
5月前
|
Java Shell Linux
java执行脚本命令(shell脚本或cmd脚本)
java执行脚本命令(shell脚本或cmd脚本)
|
7月前
|
Shell Linux 应用服务中间件
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
68 0
|
10月前
执行 `s local invoke` 命令时,如果出现报错
执行 `s local invoke` 命令时,如果出现报错
24 1
|
11月前
|
分布式计算 Java Hadoop
Shell-通过shell启动Java类中的main方法 + 通过Shell启动jar包
Shell-通过shell启动Java类中的main方法 + 通过Shell启动jar包
562 0
|
Shell
shell:使用command判断一个命令是否存在
shell:使用command判断一个命令是否存在
221 0
|
Python
【hacker的错误集】(Try to run this command from the system terminal. Make sure...)
今天,闲着没事干,把自己的python和pycharm卸载重安了,结果在安装requests库时报错了…(当时很慌,没有截图)只知道报错内容是
358 0
【hacker的错误集】(Try to run this command from the system terminal. Make sure...)
|
移动开发 Unix Shell
执行shell脚本时提示bad interpreter:No such file or directory的解决办法
执行shell脚本时提示bad interpreter:No such file or directory的解决办法
1025 0