Nic*_*ias 45 windows powershell windows-server-2003 windows-server-2008 sql-server
我到处都在阅读PowerShell是未来的方式。当它第一次发布时,我做了一大堆虚拟实验室,但从那以后我还没有在生产环境中使用它。我知道有一天我会处理已经安装了操作系统的操作系统,所以我想做好准备。
我想知道:
似乎每个人都同意微软正在努力推动这一点,但实际上还没有人使用它。我想听听使用它来完成日常任务并分享一些代码示例的系统管理员的意见。
sys*_*138 34
Microsoft 正在竭尽全力使 PowerShell 成为世界各地的高级用户和自动化编写者的选择。在 .NET 中编译代码来做同样的事情的日子已经一去不复返了,现在你只需要 notepad.exe 和 google。我们在办公室里非常喜欢它,特别是因为 Exchange 2007 的管理控制台不包含您可以在 PowerShell 中执行的所有操作。微软故意没有实现那些只能在很长一段时间内完成的事情,这样更容易开发,如果你有任何类似复杂环境的东西,这完全迫使它使用。
管理 Microsoft 的新一代产品(Win7、Windows Server 2008、Exchange 2007/2010、SQL Server 2008)都有非常丰富的 PowerShell 挂钩。一旦远程 Powershell (PowerShell 2.0 IIRC) 与 Server 2008 R2 一起部署,它对自动化编写者将变得更加有用。
我们用它做了什么:
所以是的,PowerShell 将与我们同在一段时间。
编辑:添加代码示例,因为它被请求
$list=import-csv("groupusers.csv") $lastseengroup=$list[0].group $ADGroupPrefix="grp.netware." $ADGroupSuffix="{redacted -- 格式为,ou=groups,dc=domain,dc=domain,dc=domain}" 清除变量成员列表 清除变量未知用户 foreach($list 中的 $entry){ 如果 ($($entry.group) -ne $lastseengroup) { echo "偶然发现了新组 $($entry.group),正在向 $lastseengroup 提交更改" $newgroup=$ADgroupPrefix+$lastseengroup $newgroupdn='"'+"cn=$newgroup$ADGroupSuffix"+'"' echo "正在为 $newgroup 获取 DN" $existinggroup=dsquery group domainroot -name $newgroup 如果 (($existinggroup -ne $null)) { dsmod 组 $newgroupdn -chmbr $memberlist } 别的 { dsadd group $newgroupdn -scope u -secgrp yes -members $memberlist -desc "从 eDirectory 导入的组" } 清除变量成员列表 } $User=get-user $($entry.member) -ErrorAction SilentlyContinue 如果($User.isvalid){ $UserDN=$User.distinguishedname $memberlist=$memberlist+'"'+"$UserDN"+'" ' } 别的 { $unknownusers=$unknownusers+$($entry.member) } $lastseengroup=$($entry.group) } dsadd 组 "cn=$ADGroupPrefix$lastseengroup$ADGroupSuffix" -scope u -secgrp yes -members $memberlist
这需要使用 perl 脚本创建的 CSV 文件并更新一组组。如果该组已存在,则将其成员替换为文件中指定的成员。如果该组不存在,则创建它。这是一种单向同步。此外,还没有完全投入生产,但已经接近了。
moo*_*baa 17
鉴于 Microsoft 的服务器产品将从一开始就支持 PowerShell(我相信 Exchange 的下一个版本将通过 PowerShell 提供所有配置),并且像PowerShell in Practice这样的书籍描述了一些自动化其他单调任务的好方法,我认为有理由认为 PowerShell 将在一段时间内成为 Windows Serverland 中的流行技术。
Mic*_*tum 12
我推荐Scott Hanselman 的 Podcast #162。似乎所有 Microsoft 服务器团队都“被迫”提供 PowerShell cmdlet,并遵循单一、一致的语法。
此外,像VMWare这样的第三方正在采用它
简而言之,我相信从 2.0 开始的 PowerShell 正在认真地为除最琐碎的任务之外的所有任务替换批处理文件。
Cha*_*ler 10
我作为 SQL Server 数据库管理员使用的十个 PowerShell 脚本(在我的博客上都有描述/发布):
小智 8
你用它编写了什么样的管理任务?
应用程序/服务监控:从(远程)事件日志和存储过程中获取关键性能数字,并从单个批处理文件中显示它们
我是一名 SQL Server DBA,能告诉我一些很酷的事情吗?
automssqlbackup:MSSQL 的每日备份,带轮换(每日=增量,每周+每月=完整;每天保留 5 个,每周 5 个备份),压缩,电子邮件通知
小智 7
在之前的职业生涯中使用过 unix shell 脚本,然后转向 windows 服务器管理,我可以说我真的非常非常欣赏 powershell——我没有时间也没有能力学习太多神秘的语法,并且惊喜地发现很多很多 powershell 脚本都可以用非常简单的语言编写……就像我习惯使用 ksh 一样,这就是它的价值!
我预测它会存在很长时间。
我认为这很酷:使用 SQL Server 2008,您可以获得新的 PowerShell 扩展,允许您像本地文件系统或注册表一样导航 SQL 数据库。
安装 SQL Server 客户端工具后,您可以在 PowerShell 中打开任何数据库(通过右键单击上下文菜单)并以面向对象的方式使用它:
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\ExampleDB\>function prompt {"PS >"}
PS >cd tables
PS >dir
SCHEMA NAME CREATED
------ ---- -------
dbo MyTable 25/06/2009 17:02
PS > dir | format-table name, columns, rowcount, parent
NAME COLUMNS ROWCOUNT PARENT
---- ------- -------- ------
MyTable {Id, Name} 0 {ExampleDB}
PS >$myTable = dir | where {$_.Name -eq "MyTable"}
PS >$myTable.Script()
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[MyTable](
[Id] [int] IDENTITY(1,1) NOT NULL
[Name] [nText] NOT NULL
) ON [PRIMARY]
PS >set-location \SQL\AnotherServer\Default
PS >cd databases\Northwind\tables
PS >$myTables = dir | where {$_.Rowcount -gt 100 -and $_.HasIndex -eq 1}
PS >$myTables.Count
8
PS >foreach ($table in $tables) {$table.RebuildIndexes(90)}
Run Code Online (Sandbox Code Playgroud)
请注意,第一行只是更改了提示,使其不那么长。
希望除此之外,这里发生的事情是不言而喻的:)
小智 5
SQL Server 2008 现在在 Management Studio 中具有 PowerShell 上下文选项,因此不仅仅是 Exchange 接受它。此外,将其视为 DOS 的替代品,因为这几乎是 MS 的想法,因为他们无法提高 DOS 的向后兼容性问题的安全性,所以他们只是创造了一些新的东西,问题解决了!
归档时间: |
|
查看次数: |
19194 次 |
最近记录: |