Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # function to convert a secure string to a standard string
- function ConvertTo-String {
- param(
- [System.Security.SecureString] $secureString
- )
- $marshal = [System.Runtime.InteropServices.Marshal]
- try {
- $intPtr = $marshal::SecureStringToBSTR($secureString)
- $string = $marshal::PtrToStringAuto($intPtr)
- }
- finally {
- if($intPtr) {
- $marshal::ZeroFreeBSTR($intPtr)
- }
- }
- $string
- }
- $clients = Get-Content -Path C:scriptsutilitieshostnames_online.txt
- $adminUser = "Administrator"
- # prompt for password and confirm
- do {
- $ss1 = Read-Host "Enter new password" -AsSecureString
- $ss2 = Read-Host "Enter again to confirm" -AsSecureString
- # compare strings - proceed if same - prompt again if different
- $ok = (ConvertTo-String $ss1) -ceq (ConvertTo-String $ss2)
- Write-Host "Passwords match"
- if(-not $ok) {
- Write-Host "Passwords do not match"
- }
- }
- until($ok)
- # set password variable to string value
- $adminPassword = ConvertTo-String $ss1
- # setup job to reset password on each client
- foreach($client in $clients) {
- $status = "OFFLINE"
- $isOnline = "OFFLINE"
- if((Test-Connection -ComputerName $client -Quiet -Count 1 -Delay 1) -eq $true) {
- $isOnline = "ONLINE"
- }
- # change the password
- try {
- $localAdminAccount = [adsi]"WinNT://$client/$adminuser,user"
- $localAdminAccount.SetPassword($adminPassword)
- $localAdminAccount.SetInfo()
- Write-Verbose "Password change completed successfully"
- }
- catch {
- $status = "FAILED"
- Write-Verbose "Failed to change password"
- }
- # create psobject with system info
- $obj = New-Object -TypeName PSObject -Property @{
- ComputerName = $client
- Online = $isOnline
- ChangeStatus = $status
- }
- $obj | Select computerName, Online, changeStatus | Out-File -FilePath C:test.txt -Append
- if($status -eq "FAILED" -or $isOnline -eq "OFFLINE") {
- $stream.writeline("$client -t $status")
- }
- }
- $adminPassword = " "
- Write-Verbose "Complete"
- Invoke-Item C:test.txt
- # function to convert a secure string to a standard string
- function ConvertTo-String {
- param(
- [System.Security.SecureString] $secureString
- )
- $marshal = [System.Runtime.InteropServices.Marshal]
- try {
- $intPtr = $marshal::SecureStringToBSTR($secureString)
- $string = $marshal::PtrToStringAuto($intPtr)
- }
- finally {
- if($intPtr) {
- $marshal::ZeroFreeBSTR($intPtr)
- }
- }
- $string
- }
- $clients = Get-Content -Path C:scriptsutilitieshostnames_online.txt
- $adminUser = "Administrator"
- # prompt for password and confirm
- do {
- $ss1 = Read-Host "Enter new password" -AsSecureString
- $ss2 = Read-Host "Enter again to confirm" -AsSecureString
- # compare strings - proceed if same - prompt again if different
- $ok = (ConvertTo-String $ss1) -ceq (ConvertTo-String $ss2)
- Write-Host "Passwords match"
- if(-not $ok) {
- Write-Host "Passwords do not match"
- }
- }
- until($ok)
- # set password variable to string value
- $adminPassword = ConvertTo-String $ss1
- # setup job to reset password on each client
- $scriptBlock = {
- foreach($client in $clients) {
- $status = "OFFLINE"
- $isOnline = "OFFLINE"
- if((Test-Connection -ComputerName $client -Quiet -Count 1 -Delay 1) -eq $true) {
- $isOnline = "ONLINE"
- }
- # change the password
- try {
- $localAdminAccount = [adsi]"WinNT://$client/$adminuser,user"
- $localAdminAccount.SetPassword($adminPassword)
- $localAdminAccount.SetInfo()
- Write-Verbose "Password change completed successfully"
- }
- catch {
- $status = "FAILED"
- Write-Verbose "Failed to change password"
- }
- # create psobject with system info
- $obj = New-Object -TypeName PSObject -Property @{
- ComputerName = $client
- Online = $isOnline
- ChangeStatus = $status
- }
- $obj | Select computerName, Online, changeStatus | Out-File -FilePath C:test.txt -Append
- if($status -eq "FAILED" -or $isOnline -eq "OFFLINE") {
- $stream.writeline("$client -t $status")
- }
- }
- }
- Get-Job | Remove-Job -Force
- Start-Job $scriptBlock -ArgumentList $_ -Name AdminPWReset
- Get-Job
- While(Get-Job -State "Running") {
- Start-Sleep -m 10
- }
- Receive-Job -name AdminPWReset | Out-File C:test2.txt
- $adminPassword = " "
- Write-Verbose "Complete"
- Invoke-Item C:test.txt
- Invoke-Item C:test2.txt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement