Microsoft đang làm tất cả những gì có thể để biến PowerShell trở thành sự lựa chọn của người viết quyền lực và nhà văn tự động hóa ở khắp mọi nơi. Đã qua rồi thời của việc biên dịch mã trong .NET để làm điều tương tự, bây giờ bạn chỉ cần notepad.exe và google. Chúng tôi là những người hâm mộ lớn trong văn phòng, đặc biệt là vì Bảng điều khiển quản lý của Exchange 2007 KHÔNG bao gồm mọi thứ bạn có thể làm trong PowerShell. Microsoft đã cố tình thất bại trong việc thực hiện những điều chỉ được thực hiện một lần trong một thời gian dài, dễ dàng phát triển theo cách đó, điều này hoàn toàn buộc sử dụng nó nếu bạn có bất cứ điều gì tương tự như một môi trường phức tạp.
Quản lý thế hệ sản phẩm mới hơn của Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) đều có các móc PowerShell rất phong phú. Khi Remote Powershell (PowerShell 2.0 IIRC) được triển khai với Server 2008 R2, nó sẽ trở nên hữu ích hơn nữa đối với các nhà văn tự động hóa.
Những gì chúng tôi đã làm với nó:
- Tạo một trang web để ủy quyền một số nhiệm vụ quản trị viên cho người dùng trợ giúp. Trang web kích hoạt các lệnh được thực thi trong PowerShell. Những việc nó làm:
- Tạo và xóa tài khoản người dùng, bao gồm cung cấp hộp thư Exchange 2007 và thư mục chính
- Mở khóa tài khoản
- Tạo / xóa nhóm
- Thêm / xóa người dùng khỏi nhóm
- Di chuyển người dùng giữa các cửa hàng thư
- Đặt mật khẩu
- Lấy các trích xuất từ hệ thống ERP và đẩy dữ liệu sổ địa chỉ toàn cầu vào Active Directory hàng đêm.
- Giải quyết vấn đề LegacyExchangeDN đã xảy ra với quá trình di chuyển Exchange 2003 sang Exchange 2007 của chúng tôi. Phải thêm địa chỉ X500 cho mọi người đã từng sử dụng trên Exchange 2003. Một tập lệnh PowerShell khá ngắn đã sửa nó.
- Tạo kịch bản "hộp thư nhóm" (hộp thư chung trong Exchange nơi nhiều người dùng có quyền truy cập vào hộp thư), một quy trình thủ công khác do tính chất của dữ liệu chúng tôi cần trước khi khởi động. Nó tiêu chuẩn hóa rất nhiều việc thiết lập các hộp thư này.
- Tạo một tập lệnh đi qua tất cả các máy có tên miền đặt lại khóa đăng ký cụ thể và khởi động lại dịch vụ. Phải mất 18 giờ để hoàn thành, nhưng nó đã hoàn thành công việc.
Vì vậy, vâng, PowerShell sẽ ở với chúng tôi khá lâu.
EDIT : Thêm một mẫu mã, vì nó được yêu cầu
$ list = import-csv ("groupusers.csv")
$ lastseengroup = $ list [0] .group
$ ADgroupPrefix = "grp.netware."
$ ADgroupSuffix = "{đã xử lý lại - theo định dạng, ou = nhóm, dc = domain, dc = domain, dc = domain}"
Danh sách thành viên rõ ràng
Những ẩn số rõ ràng
foreach (mục nhập $ trong danh sách $) {
if ($ ($ entry.group) -ne $ lastseengroup) {
echo "tình cờ gặp nhóm mới $ ($ entry.group), cam kết thay đổi thành $ lastseengroup"
$ newgroup = $ ADgroupPrefix + $ Lastseengroup
$ newgroupdn = '"' +" cn = $ newgroup $ ADgroupSuffix "+ '"'
echo "nhận DN cho $ newgroup"
$ currentgroup = tên miền nhóm DSFery -name $ newgroup
if (($ currentgroup -ne $ null)) {
nhóm dsmod $ newgroupdn -chmbr $ thành viên
} khác {
nhóm DSadd $ newgroupdn -scope u -secgrp yes -members $ Memberlist -desc "Nhóm được nhập từ eDirectory"
}
Danh sách thành viên rõ ràng
}
$ User = get-user $ ($ entry.member) -ErrorAction SilentlyContinue
if ($ User.isvalid) {
$ UserDN = $ User.distinguishedname
$ thành viên = $ danh sách thành viên + '"' +" $ UserDN "+ '"'
} khác {
$ unknownusers = $ unknownusers + $ ($ entry.member)
}
$ lastseengroup = $ ($ entry.group)
}
nhóm DSadd "cn = $ ADgroupPrefix $ lastseengroup $ ADgroupSuffix" -scope u -secgrp yes -members $ thành viên
Thao tác này sẽ lấy tệp CSV được tạo bằng tập lệnh perl và cập nhật một nhóm các nhóm. Nếu nhóm đã tồn tại, nó sẽ thay thế thành viên bằng nhóm được chỉ định trong tệp. Nếu nhóm không tồn tại, nó tạo ra nó. Đây là đồng bộ một chiều. Ngoài ra, không hoàn toàn trong sản xuất, nhưng gần.