Posted August 10, 20186 yr Hey Fellow PW users, I've created a script which allows the system to change its name to %computername%-Current logged on username, which makes life a little easier when trying to remote to their computers on the remote control tool/Webapp. To get started, create your script in the script editor, in my example, Name: Update Computer Name with Logged on Username Windows/Powershell Code: $pwqusers = quser | Select-Object -skip 1 $pwquserfmt = $pwqusers.substring(1,22).Trim() -join "," Set-ItemProperty -Path "HKLM:\Software\MMSOFT Design\PC Monitor\" -Name ComputerName -Value "$env:computername-$pwquserfmt" Click Save. Next we create at new task, Name: Update Computer Name with Logged on Username Current Scope -> Windows Workstations Enable Scheduling -> (I've set it to run once a day) Every weekday (Monday to Friday), starting on 12 August 2018 at 09:00 (Australia/Brisbane) Scripts tab, Select/add your new script you just created and once that's done click save. You can now run the task on demand as well which will update all of the PC's in your windows workstations scope to Computer Name-Logged on usernames This works for RDSH hosts as well however it could get a bit of out hand if you have 5-10+ users logged in so I probably wouldn't recommend it to be used on servers. I Hope this helps you somehow, these scripts/suggestions come with no warranty and I bear no responsibility if this breaks anything, use at your own risk etc..etc.. Cheers, Quenten Edited August 10, 20186 yr by Quenten Grasso
January 9, 20205 yr So I wanted the full display name so I have updated your script. $dom = $env:userdomain $getusr = quser | Select-Object -skip 1 $usr = $getusr.substring(1,22).Trim() -join "," $display = ([adsi]"WinNT://$dom/$usr,user").fullname Set-ItemProperty -Path "HKLM:\Software\MMSOFT Design\PC Monitor\" -Name ComputerName -Value "$env:computername - $display"
July 15, 20204 yr I had written something similar resently and posted, I tested yours and I don't think your pulling in the last logged in user just machine name as I could not get to run, when you run this as a script in session 0 it does not get the current logged in user, it seems to be pulling in session 0 which is blank Also, If I may, I suggest you run at at each logon event, this way its always current for the current user on the machine 100% of the time.
May 19, 20213 yr This worked very well. VERY Helpful. Thank you very much Quenten & Bruce for your update to full display name.
March 24, 20223 yr On 3/21/2022 at 7:00 PM, JanSnow said: Is there a tweak to exempt certain machines (servers and VMs) on this script? Don't run it against those machines. Create a scope in Pulseway and apply the job / script to that scope and don't include those machines. If you don't want to do that, then modify the script and using this. Change the PCNames to the ones you don't want it to run on, and then yea, it will just exit with a success if it sees those names. If you are on machines that are all PowerShell 3.0 and above, then you can also use $env:computername -in $Exclusions as well. -contains is PowerShell 2 compatible. $Exclusions = @("PCName1", "PCName2", "PCName3") if ($Exclusions -contains $env:COMPUTERNAME) { Exit 0 } else { PLACE REST OF CODE HERE }
March 30, 20223 yr I did create a scope to exempt the machines but I'll keep this script for future reference. Thanks mate!
April 26, 20222 yr Hi, I have expanded a bit on this small script, both to do some error handeling and do some logging of changes made. I have this running on my instace multiple times a day. Hope this can help someone. #Check if eventlog source is already created, if not then create if (![System.Diagnostics.EventLog]::SourceExists("Pulseway Scripting")){ New-EventLog -LogName Application -Source "Pulseway Scripting" } #Set username to blank $username = '' #Set username to actual username $username = $(Get-WMIObject -class Win32_ComputerSystem | select username).username $usernamev2 = (((query user)[1]).TrimStart()).SubString(0,21) #Combine username and text $usertext = "| $username" #Fall back to alternative user information if first is empty if($usertext -eq "| ") { $usertext = "| $usernamev2" } #Collect current value $curvalue = $(Get-ItemProperty "HKLM:\SOFTWARE\MMSOFT Design\PC Monitor\" -Name ComputerName).Computername #Check that there is a username If ($usertext -ne "| ") { #Collect computername $computername = $env:COMPUTERNAME #Combine username and text $pulsewayname = "$computername $usertext" #Check that current value is not the same as the new one if ($curvalue -ne $pulsewayname) { #Set the new value Set-ItemProperty "HKLM:\SOFTWARE\MMSOFT Design\PC Monitor\" -Name ComputerName -Value $pulsewayname #Write the changes to event log Write-EventLog -LogName Application -Source "Pulseway Scripting" -EventId 1000 -EntryType Information -Message ` "Event: Pulseway Computername Updated Current user: $username Computername: $computername Changed from: $curvalue Changed to: $pulsewayname " } }
Create an account or sign in to comment