Thay đổi mật khẩu quản trị với PowerShell: Giả sử rằng bạn đang đăng nhập bằng tài khoản Administrator domain trên máy tính Windows 7 Desktop trên hệ thống domain.. Đó là lý do tại sao
Trang 110 thủ thuật với PowerShell trong Windows Server 2008 -
Phần 1
1 Thay đổi mật khẩu quản trị với PowerShell:
Giả sử rằng bạn đang đăng nhập bằng tài khoản Administrator domain trên máy tính Windows 7 Desktop trên hệ thống domain Yêu cầu đặt ra ở đây là phải thay đổi mật khẩu trên server remote tại Chicago có tên là CHI-WIN7-22 Sau khi 1
tài khoản được sử dụng nhiều lần thì cơ hội “bẻ khóa” mật khẩu lại càng cao Đó
là lý do tại sao chúng ta nên thay đổi mật khẩu của tài khoản sau 1 khoảng thời gian sử dụng
Trước tiên, chúng ta cần phải tạo mới 1 đối tượng ADSI đối với tài
khoản Administrator local trên server Để thực hiện, các bạn hãy gõ lệnh sau tại màn hình PowerShell:
[ADSI]$Admin=”WinNT://CHI-WIN7-22/Administrator”
Về bản chất, câu lệnh trên sẽ thực hiện việc “lấy lại” tài khoản admin trên
máy CHI-WIN7-22 và gán với đối tượngADSI có tên là $Admin Nếu muốn kết nối tới máy tính khác thì các bạn chỉ việc thay đổi CHI-WIN7-22 thành tên tương
ứng của máy tính đó Còn nếu muốn biết mật khẩu đó đã sử dụng được bao lâu để
có thể thay đổi, chúng ta sẽ sử dụng lệnh:
$Admin.PasswordAge
Câu lệnh trên sẽ hiển thị khoảng thời gian đã trôi qua kể từ lần thay đổi gần đây
nhất, và vì giá trị trả về được tính bằng giây, nên chúng ta sẽ chia cho 86.400 để
chuyển thành ngày:
Trang 2Nếu các bạn để ý kỹ sẽ thấy rằng chúng tôi có sử dụng thuộc tính Value ở đây Đó
là vì phần thông tinPasswordAge được lưu trữ dưới dạng collection, di vậy chúng
ta cần phải biết giá trị của collection đó để tra lại con số chính xác nhằm thực hiện
phép tính chia Cuối cùng, thay đổi mật khẩu bằng cách dùng hàmSetPassword, đi kèm với đó là mật khẩu mới – argument Ví dụ, nếu muốn đặt password mới
là S3cre+WOrdthì phải gõ lệnh như sau:
$Admin.SetPassword(“S3cre+WOrd”)
Tuy nhiên, các bạn cần lưu ý rằng sau khi nhấn Enter thì hệ thống sẽ không hiển thị bất cứ thông báo nào, mà sự thay đổi này sẽ ngay lập tức có hiệu lực Bởi vì chúng ta đã sử dụng phương pháp – method, chứ không phải là lệnh – cmdlet
Không giống như cmdlet, SetPassword không hỗ trợ -whatif hoặc -confirm
2 Tắt hoặc khởi động lại server:
Để thực hiện việc này, chúng ta sẽ sử dụng 1 cặp lệnh cmdlet dựa trên WMI, đó
là Restart-Computer và Stop-Computer Mực dù không đi quá sâu vào việc
phân tích từng lệnh trên, nhưng chúng ta vẫn phải đề cập tới, vì những lệnh cmdlet
đó có chấp nhận các thông tin thay thế – có ích rất lớn trong việc chỉ định tài khoản người dùng đã đăng nhập sẵn, qua đó chúng ta có thể thực hiện được các lệnh tương ứng của tài khoản đó
Bên cạnh đó, các bạn còn có thể tận dụng được lợi thế của -whatif và -confirm, có
nghĩa là nếu muốn thực hiện lệnh tắt hoặc khởi động lại hệ thống, chúng ta hoàn toàn có thể thực hiện được theo cách riêng Và nếu áp dụng vào thực tế, nhất là trong trường hợp cần phải tắt nhiều máy tính cùng lúc, đây sẽ là giải pháp hiệu quả nhất Cấu trúc cơ bản của lệnh này là:
Trang 3Restart-Computer -ComputerName <string[ ]>
với -ComputerName <string[ ]> là mảng dữ liệu dạng chuỗi, được gán với tên của 1 hoặc nhiều máy tính bất kỳ Stop-Computer sử dụng cú pháp tương tự, ví
dụ nếu muốn khởi động lại 2 máy tính có tên là CHI-DC02 vàCHI-FP01 thì
chúng ta gõ lệnh:
Restart-Computer “CHI-DC02”, “CHI-FP01”
Bây giờ, chúng ta sẽ chuyển sang 1 ví dụ khác phức tạp hơn, giả sử rằng chúng ta
có 1 danh sách nhiều máy tính trong 1 file có tên là servers.txt, sử dụng lệnh cmdlet Get-Content để lấy nội dung bên trong file text đó:
Do vậy, nếu bạn phải thực hiện trên nhiều máy tính thì hãy nhập tên của những máy tính đó vào 1 file text Và mỗi lần cần khởi động lại, chúng ta chỉ cần áp dụng
lệnh cmdlet Get-Content Ví dụ như dưới đây:
Tiếp theo, hệ thống sẽ đẩy phần danh sách này tới mệnh đề where để kiểm tra Bên
trong mệnh đề where này, chúng ta sẽ tiến hành thực hiện lệnh test-connection – mục đích chính là để ping tới từng máy tính riêng biệt Tham số -quiet sẽ trả về giá trị true hoặc false, trong khi -count 2 có nghĩa là mỗi máy tính chỉ được ping
2 lần Đối với mỗi máy được ping 2 lần, hệ thống sẽ tự động duyệt chúng
Tiếp theo, chúng ta sẽ phải sử dụng foreach Cụ thể, đối với mỗi tên máy tính
vượt qua được lần kiểm tra trên, hệ thống sẽ hiển thị thông báo với màu xanh lá
cây có nội dung là: “Restarting” Tham số $_ đại diện cho từng đối tượng đang ở trong hệ thống, và sau đó lệnh cmdlet Restart-Computer sẽ được gọi ra để khởi
động lại tất cả các máy tính đã được ping Bên cạnh đó, chúng ta còn có thể sử
dụng thêm tham số -force để ngăn chặn bất kỳ tài khoản nào muốn đăng nhập