批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[转载代码] 用PowerShell实现递归还原变量

本篇文章引用的小例子来自如下链接:
http://bbs.chinaunix.net/thread-365508-1-1.html

这篇帖子主要讨论了eval的作用, 我们将会就变量展开进行简单的研究.
在PowerShell如果我定义了如下的变量:

PS C:\> $a = 'get-date'; $b = 'a'; $c = 'b'; $d = 'c'
PS C:\> "`$a = {0}`n`$b = {1}`n`$c = {2}`n$d = {3}" -f $a,$b,$c,$d
$a = get-date
$b = a
$c = b
$d = c
PS C:\>


我希望能通过传递$d这个参数, 取得get-date字符串. 因此, 我编写了如下的小函数:

PS C:\> function ier ($cmd) {
>> while (dir -Path variable: -Name | ?{$_ -eq $cmd})
>> {
>>   $cmd = Invoke-Expression `$$cmd
>> }
>> $cmd
>> }
>>
PS C:\>


该函数会查看传递进来的变量是否存在, 如果存在就会被递归的展开, 会输出最后的命令. 最后, 用执行匿名代码段将递归展开的字符串执行:

PS C:\> ier $d
get-date
PS C:\> & $(ier $d)

2007年7月6日 1:30:03

PS C:\>


时间不早了...准备休息了..

http://blog.chinaunix.net/uid-9781829-id-1997701.html

此文作者的脑袋是老旧脑袋.
其思路就是老旧的思路.即第一代脚本,
总之我认为此人,[精通第一代脚本之妙,不懂面向对象的第二代脚本之妙]即总想着搞字符串操作,不想着用属性方法解决问题
写脚本这家伙总想把python搞成bash,总想把powershell搞成bat或bash.
鉴定完毕
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

返回列表