有趣的使用PowerShell 2.0三项​​赛!

如所承诺的,这个帖子是第几个希望将谈论PSH 2.0功能。嗯......其实,也许我会变成一个名为“愚蠢的PowerShell技巧”正在进行的一系列本。

总之,三项赛是的那种挫败我与CTP2构建的事情之一。出于某种原因,我不能(不是在所有井实际上)获得三项赛到正常工作。话虽这么说,多亏了从产品团队倾吐心事,我意识到我的逻辑是有缺陷的,和CTP3版本,我不仅可以得到三项赛工作(以及还挺)。不过,我觉得我也许能帮助其他人也是如此。所以...以下是一步一步的希望展示如何使用自定义组件使用三项赛其中。

顺便说一句 - CTP3刚刚发布。点击这里查看更多

步骤1

加载自定义程序集,创建一个对象,并查看是否对象支持活动。例如,下面显示了如何使用一些伪代码做到这一点:

添加型-路径“C:\工具\ SuperCool.dll”

$为MyObject =新物体cool.scp “主机1”, “为myuser”, “输入mypassword”

$为MyObject |获得会员

在我的情况下,最终的格式化表格有以下事件:

  • OnTransferEnd
  • OnTransferProgress
  • OnTransferStart

酷,考虑到我的系统之间传输文件。

第二步

一旦你已经想通了,这是类型的事件提供给你,使用这些事件是下一个挑战。为了找出答案,使用注册-ObjectEventcmdlet将事件订阅注册到你的PowerShell会话。例如:

注册-ObjectEvent-InputObject$为MyObject-EventNameOnTransferProgress-SourceIdentifierScp.OnTransferProgress`

-行动{$全球:MCDPtotalBytes =的$ args [3];$全球:MCDPtransferredBytes =的$ args [2]}

注册-ObjectEvent-InputObject$为MyObject-EventNameOnTransferEnd`

-SourceIdentifierScp.OnTransferEnd-行动{$全球:MCDPGetDone = $真}

所以...什么是怎么回事?首先,你使用的是InputObject参数在对象的cmdlet来传递。因为该cmdlet需要从它会创建一个事件订阅对象你这样做。为了事件名称名称参数,您提供的事件(一个或多个)的名字,你在第一步中发现的。为了SOURCEIDENTIFIER参数,你只需要提供一个唯一的名称。我倾向于使用的东西,是关系到从我的事件将是未来的对象。最后,行动参数是可选。就我而言,我需要的情况下做一些事情。

在这一点上,你可能会问,“就如何使用泰森这些事件?”

好吧,首先,我只需要脚本等到发出做移动使用SCP文件的命令。基本上,没有脚本的等待,它一直一次获取或发布命令发出去。如果我是交互发出这些命令,将被罚款。但是,因为脚本是越来越,比较,然后将所有从远程数据源复制文件。我跑成时序问题进行了脚本试图来比较也尚未完成复制文件。

为了使脚本等待,我有两个选择。首先,我可以使用等待事件小命令,这将导致脚本等待发生特定事件。不幸的是,当我使用此cmdlet,我一直运行到奇怪的问题是脚本的执行,有时没有“等待”或只是不停地“等待”。原来等待的问题涉及到像网络滴,导致从未被解雇的事件东西。而其他的问题仍然是一个谜。

无论如何,第二个选项放在一起,只是不停地检查东西是一个循环真正。为此,我们首先这是因为我以前上市的动作参数的一个定义的脚本块开始:

-action {$全球:MCDPGetDone = $真}

注聪明人,该脚本块为自己范围内的动作参数执行规定。因此,为什么我定义MCDPGetDone变量作为全球!

接下来,我们定义了以下循环:

做{写进展-activity “获得 - $($ _名称)” - 状态 “复制” -PercentComplete(($ MCDPtransferredBytes / $ MCDPtotalBytes)* 100)},而($ MCDPGetDone -eq $空)

超爽......不仅要转移我现在脚本等待一个文件!但是,由于OnTransferProgress事件处理程序,我也得到一个进度条。:>)

但愿这是有帮助的!

如果你喜欢这个,看看泰森一些其他职位:

或者,如果你愿意,你还可以检查出一些泰森的最新出版物:

最后,请访问微软子网更多新闻,博客,以及来自各地的网络舆论。或者,报名参加双周微软通讯(点击新闻/微软新闻快讯)

加入对网络世界的社有个足球雷竞技app区Facebook的LinkedIn对那些顶级心态的话题发表评论。
有关:

©2008Raybet2

IT薪资调查:结果是