注册
登录
论坛
搜索
帮助
导航
私人消息 (0)
公共消息 (0)
论坛任务 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
批处理之家
»
PowerShell原创&转载
» 用PowerShell实现递归还原变量
[新手上路]
批处理新手入门导读
[视频教程]
批处理基础视频教程
[视频教程]
VBS基础视频教程
[批处理精品]
批处理版照片整理器
[批处理精品]
纯批处理备份&还原驱动
[批处理精品]
CMD命令50条不能说的秘密
[在线下载]
第三方命令行工具
[在线帮助]
VBScript / JScript 在线参考
返回列表
发帖
DAIC
发短消息
加为好友
DAIC
当前离线
UID
38107
帖子
2874
精华
0
积分
7021
PB
6013
技术
336
捐助
0
阅读权限
99
在线时间
595 小时
注册时间
2011-6-2
最后登录
2023-10-31
中将
帖子
2874
积分
7021
技术
336
捐助
0
注册时间
2011-6-2
1
楼
跳转到
»
正序看帖
打印
字体大小:
t
T
发表于 2013-10-18 13:21
|
只看该作者
[转载代码]
用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
收藏
分享
PowerShell
发短消息
加为好友
PowerShell
(powershell传教士)
当前离线
UID
61470
帖子
437
精华
0
积分
1319
PB
1238
技术
27
捐助
0
阅读权限
50
在线时间
307 小时
注册时间
2013-6-30
最后登录
2014-7-7
上尉
帖子
437
积分
1319
技术
27
捐助
0
注册时间
2013-6-30
2
楼
发表于 2013-10-18 18:53
|
只看该作者
此文作者的脑袋是老旧脑袋.
其思路就是老旧的思路.即第一代脚本,
总之我认为此人,[精通第一代脚本之妙,不懂面向对象的第二代脚本之妙]即总想着搞字符串操作,不想着用属性方法解决问题
写脚本这家伙总想把python搞成bash,总想把powershell搞成bat或bash.
鉴定完毕
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也
TOP
返回列表
批处理专区: BAT CMD DOS
BAT求助&讨论
BAT教程&资料
BAT原创&转载
BAT新大陆
BAT转载代码
新手练功
出题挑战
有偿求助
第三方命令行
开源原创工具
iBAT
Take Command
其他脚本区
PowerShell求助&讨论
PowerShell教程&资料
PowerShell原创&转载
VBS求助&讨论
JS / JScript / JavaScript
VBS教程&资料
VBS原创&转载
UNIX/Linux Shell
Python
Perl
网络资源区
电脑技术研讨
精品软件交流
论坛事务区
站务交流
意见反馈
论坛公告
版主申请
交换链接
建站杂谈
活动专区
论坛总版规
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]