我一直在阅读,PowerShell是未来之路.当它第一次发布时,我做了一大堆虚拟实验室,但从那以后我还没有在生产环境中使用它.我知道当我处理已经安装的操作系统的那一天会到来,所以我想做好准备.
我想知道:
>你用它吗?
>使用PowerShell的’bootstrapping’过程是什么?
>您使用哪种系统管理任务编写脚本?
>我是SQL Server数据库管理员.有什么好处呢?
似乎每个人都认为微软正在努力推动这一点,但实际上还没有人使用它.我希望听到系统管理员在那里使用它来完成每天的任务并共享一些代码示例.
微软正竭尽所能使PowerShell成为各地电力用户和自动化作家的选择.为了做同样的事情,在.NET中编译代码的日子已经一去不复返了,现在你只需要notepad.exe和google.我们是办公室的忠实粉丝,特别是因为Exchange 2007的管理控制台不包含您在PowerShell中可以做的所有事情.微软故意未能实现只能在很长一段时间内完成一次的事情,更容易以这种方式开发,如果你有类似复杂环境的东西,它就会强行使用它.
管理Microsoft的新一代产品(Win7,Windows Server 2008,Exchange 2007/2010,SQL Server 2008)都具有非常丰富的PowerShell挂钩.一旦Remote Powershell(PowerShell 2.0 IIRC)与Server 2008 R2一起部署,它对于自动化编写者来说将变得更加有用.
我们用它做了什么:
>创建一个网页,将某些管理任务委派给帮助台用户.该网页会触发在PowerShell中执行的命令.它做的事情:
>创建和删除用户帐户,包括配置Exchange 2007邮箱和主目录
>解锁已锁定的帐户
>创建/删除组
>从组中添加/删除用户
>在邮件存储之间移动用户
>设置密码
>从ERP系统中提取数据,并在每晚将全局地址簿数据推送到Active Directory.
>解决使用Exchange 2003到Exchange 2007迁移而出现的LegacyExchangeDN问题.不得不向曾经在Exchange 2003上的每个人添加一个X500地址.一个相当简短的PowerShell脚本修复了它.
>脚本创建“组邮箱”(Exchange中的共享邮箱,其中多个用户可以访问邮箱),这是一个手动过程,因为在启动之前我们需要数据的性质.它极大地标准化了这些邮箱的设置.
>创建了一个脚本,该脚本遍历所有已重命名的计算机,重置特定的注册表项并重新启动服务.花了18个小时才完成,但它完成了工作.
所以,是的,PowerShell将与我们在一起很长一段时间.
编辑:添加代码样本,因为它是被请求的
$list=import-csv("groupusers.csv") $lastseengroup=$list[0].group $ADGroupPrefix="grp.netware." $ADGroupSuffix="{redacted -- in the format of,ou=groups,dc=domain,dc=domain}" Clear-Variable memberlist Clear-Variable unknownusers foreach ($entry in $list) { if ($($entry.group) -ne $lastseengroup) { echo "stumbled across new group $($entry.group),committing changes to $lastseengroup" $newgroup=$ADgroupPrefix+$lastseengroup $newgroupdn='"'+"cn=$newgroup$ADGroupSuffix"+'"' echo "getting DN for $newgroup" $existinggroup=dsquery group domainroot -name $newgroup if (($existinggroup -ne $null)) { dsmod group $newgroupdn -chmbr $memberlist } else { dsadd group $newgroupdn -scope u -secgrp yes -members $memberlist -desc "Group imported from eDirectory" } Clear-Variable memberlist } $User=get-user $($entry.member) -ErrorAction SilentlyContinue if ($User.isvalid) { $UserDN=$User.distinguishedname $memberlist=$memberlist+'"'+"$UserDN"+'" ' } else { $unknownusers=$unknownusers+$($entry.member) } $lastseengroup=$($entry.group) } dsadd group "cn=$ADGroupPrefix$lastseengroup$ADGroupSuffix" -scope u -secgrp yes -members $memberlist
这将使用perl脚本创建CSV文件并更新一组组.如果该组已存在,则将该成员资格替换为该文件中指定的成员资格.如果该组不存在,则会创建该组.这是单向同步.此外,还没有完全生产,但接近.