আপনি ডোমেন অ্যাকাউন্টগুলির সাথে যা খুঁজছেন তা করার জন্য এখানে কিছু পাওয়ারশেল কোড রয়েছে:
param (
[string]$oldPassword = $( Read-Host "Old password"),
[string]$newPassword = $( Read-Host "New password")
)
$ADSystemInfo = New-Object -ComObject ADSystemInfo
$type = $ADSystemInfo.GetType()
$user = [ADSI] "LDAP://$($type.InvokeMember('UserName', 'GetProperty', $null, $ADSystemInfo, $null))"
$user.ChangePassword( $oldPassword, $newPassword)
ASDI প্রদানকারী এছাড়াও সিনট্যাক্স সমর্থন WinNT://computername/username
জন্য ChangePassword()
পদ্ধতি। ADSystemInfo
বস্তু, তবে মেশিন-স্থানীয় অ্যাকাউন্টগুলির জন্য কাজ করবে না, তাই ঠিক কোড retrofitting সাথে উপরে WinNT://...
সিনট্যাক্স কার্যকর নয়।
(স্থানীয় এবং ডোমেন অ্যাকাউন্টের মধ্যে পার্থক্য করার জন্য যে কেউ ডাব্লু / কোড সম্পাদনার পরামর্শ দিতে চান?)
সম্পূর্ণ আলাদা ট্যাক্সে, পুরানো NetUserChangePassword
এপিআই স্থানীয় (এবং ডোমেনের সাথে কাজ করবে, তবে আপনি নেটবিআইওএস সিনট্যাক্সে ডোমেনের নামটি নির্দিষ্ট করেছেন), এছাড়াও:
param (
[string]$oldPassword = $( Read-Host "Old password"),
[string]$newPassword = $( Read-Host "New password")
)
$MethodDefinition = @'
[DllImport("netapi32.dll", CharSet = CharSet.Unicode)]
public static extern bool NetUserChangePassword(string domainname, string username, string oldPassword, string newPassword);
'@
$NetAPI32 = Add-Type -MemberDefinition $MethodDefinition -Name 'NetAPI32' -Namespace 'Win32' -PassThru
$NetAPI32::NetUserChangePassword('.', $env:username, $oldPassword, $newPassword)
এই কোডটি ধরে নিয়েছে আপনি স্থানীয় মেশিনে একটি পাসওয়ার্ড পরিবর্তন করছেন ("।")।