Board logo

标题: [转载教程] 玩转PowerShell之(3)命令执行结果 [打印本页]

作者: HAT    时间: 2013-10-29 14:39     标题: 玩转PowerShell之(3)命令执行结果

玩转PowerShell之(1)检测硬盘自由空间http://bbs.bathome.net/thread-27008-1-1.html
玩转PowerShell之(2)计算篇http://bbs.bathome.net/thread-27010-1-1.html
玩转PowerShell之(3)命令执行结果http://bbs.bathome.net/thread-27011-1-1.html
玩转PowerShell之(4)email篇http://bbs.bathome.net/thread-27012-1-1.html
玩转PowerShell之(5)偷偷下载http://bbs.bathome.net/thread-27013-1-1.html
玩转PowerShell之(6)数据库篇http://bbs.bathome.net/thread-27014-1-1.html
玩转PowerShell之(7)图形菜单http://bbs.bathome.net/thread-27016-1-1.html
玩转PowerShell之(8)email篇续  - 把gmail当相册http://bbs.bathome.net/thread-27017-1-1.html
玩转PowerShell之(9)DNShttp://bbs.bathome.net/thread-27018-1-1.html

从帖子的题目上看恐怕看不出命令执行结果对于我们来说有多么大的重要性。但是如果我换一种说法,也许您就感兴趣了。
如何检测远程计算机是否能够ping通?如何检测某个目录下是否存在某个文件?
您可能会想到好几种方法,来实现。下面我来介绍一种非常容易的办法,保证你会感兴趣!

第一,检测能否ping通远程计算机。
很简单,直接ping就可以了比如
ping notexsitedpc
或者 ping 192.168.1.244
如果这个计算机不存在,或者dns解析不出来ip地址,你都不会ping成功。会得到类似 request time out 之类的返回值。
那么如果在脚本中来ping的话,一般是需要对返回值进行字符串匹配,来判断是否成功。在powershell下,太好办了。
直接在执行完ping语句后,打$?,如果结果是true证明ping通了,如果是false则ping失败。

举一反三,检查某个文件,某个目录是否存在呢?
dir c:\notexsitedfile.txt
$?
如果结果是 false 则文件不存在,如果结果是 true则文件存在。
这样我们就可以利用$?来写脚本了比如检测某台计算机的网络是否连通就可以这么写
ping myserver
if ($?)
{"Greate! the server is online!"}
else
{"**, the server is offline!"}


顺便说一句,如果你希望得到上一条命令的返回数字值,而不是布尔值,可以调用powershell的保留变量$lastexitcode
还是上面的命令
dir c:\notexsitedfile.txt
执行之后,打入
$lastexitcode
如果成功则返回0,失败则返回1。
自己试试吧!

呵呵,今天就到这里了,看看您还能想到用$?来做些其他什么事情?

http://bbs.winos.cn/thread-26371-1-1.html




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2