*** *** UPDATE
以下是资料来源:http://poshcode.org/1910
*************
我最近遇到了一个使用RDC RemoteApp的非常有趣的场景。基本上,我们有一个使用RDC RemoteApp部署医疗相关应用程序的客户机。对于他们的部署场景,他们希望创建RDP文件并将其分发给不在组织内部网络上的远程用户。在部署了一半时间后,他们转向我们,问:“密码更改了吗?”
说实话,在使用RemoteApp时,我从来没有考虑过修改密码。毕竟,在大多数部署中,用户都有一个属于域的桌面,或者他们通过网络访问,我们可以用UAG之类的东西作为密码修改的前端。但是,通过非域成员机器上的RDP文件使用RemoteApp确实没有办法让用户更改密码。是的,你没听错……用户没有办法更改他们的密码,也没有办法得到密码即将到期的通知。
要明白这是为什么,你必须采取两点考虑有关RemoteApp的情况。首先,远程应用的主要特征是,它提供无缝窗口。换句话说,应用程序看起来是在用户的机器上本地运行。其次,要实现其无缝窗口魔法,远程应用不使用Windows资源管理器为用户所进行的RDS会话主机服务器上的壳。相反,它使用RDPSHELL.EXE其加载一组Windows事件挂钩到用户的会话,允许它来监控和管理桌面上的所有窗口的状态。其结果是,下面的事情有关RemoteApp会话真:
- 用户看不到RemoteApp会话的桌面。
- 用户不会看到密码的通知。
- 除非使用GPO指定,否则不会处理登录脚本。
- 从登录脚本,有时从已发布的应用程序本身的对话框不显示。
所以...一个人如何工作围绕的RemoteApp的功能,允许用户更改他们的密码?好吧,我想出了一个解决方案涉及的PowerShell。虽然我不一定能公布源代码,我可以形容我做了什么。
总体来说,我需要为用户提供一个GUI更改他们的密码。然而,要解决RemoteApp的,我不得不写基本上一个PowerShell基于GUI,然后将其发布为预期的应用。然后,根据这个GUI的实际意图应用程序启动和密码更改GUI被关闭的结局。要创建密码更改的解决方案是使用以下步骤:
- 首先,下载PowerShellPack:http://code.msdn.microsoft.com/PowerShellPack。
- 接下来,从PowerShellPack中获取WPK模块,并将其复制到包含未来密码更改脚本的文件夹中。
- 接下来,编写一个PowerShell脚本,执行以下操作:
- 进口朝鲜劳动党模块。
- 确定何时登录的用户的密码即将过期(密码策略设置可以被硬编码或从Active Directory确定)。
- 如果用户的密码不会在指定的最小期限内过期(比如10天)。然后启动预期的应用程序。
- 如果用户的密码将在10天内过期,则使用WPK模块中的WPF cmdlet显示密码更改GUI。在我的GUI中有三个密码框(当前密码、新密码和确认新密码)、两个按钮(更改和取消)和一个用于显示消息的文本块。
- 对于时候,用户的密码将在10天内到期的更大然后有一天,GUI允许用户取消并启动应用程序。
- 当用户的密码在某个最大期限内(比如少于一天)过期时,取消按钮将被禁用。
- 当用户填好了正确的密码信息(新老),他们可以单击更改。在单击更改,使用的DirectoryEntry类的密码方法来改变用户的密码。一旦密码已被更改,密码更改GUI被关闭,预期应用程序启动。
- 接下来,一个批处理文件需要创建执行使用以下命令PowerShell脚本:powershell.exe -STA -NoProfile -WindowStyle隐藏-Command“C:\帕斯曼\ PassMan.ps1”。注意隐藏WindowStyle的使用。这确保了被执行的脚本时PowerShell控制台中未示出给用户。
- 最后,密码更改GUI复制到所有的RDC会话主机服务器和发布批处理文件作为RemoteApp。
希望这可以帮助别人...
如果你喜欢这个,看看泰森的其他文章:
- 使用社交网络来建立信任的公开验证的水平...
- 哪种浏览器更安全的IE8,Safari 4中,火狐3.5,Chrome 4的,或Opera 10?
- 当一台计算机科学学位的问题,而当它不
- 云计算从什么时候开始成为/需要一个宣言?
- 为什么一个钓鱼用诱饵证书颁发机构(CA)?
- 如果所有人都信任你,我会信任你吗?
- 这里是一个很好的问题:是脚本编程或者只是系统管理?
- 有趣的使用PowerShell 2.0三项赛!
- 创建一个自定义404页面来处理ASP的链接重定向。净的web应用程序
或者,如果你愿意,你还可以检查出一些泰森的最新出版物:
- Windows PowerShell中偷跑(2nd版)
- Windows Server 2008的偷跑(是的,我确实帮助这本书)