Powershell Desktop latest version is 5.1 and no new versions will be coming out. A limit involving the quotient of two sums. wmic qfe. CVE-2019-0708. The Get-Hotfix cmdlet gets all hotfixes installed on the local computer. Please keep us in touch if there are any updates of the case. This is something I almost always do. the current user. I have read and tested that Get-hotfix is not working after finding any not online computer. How to check IPv6 address via command line? It can be enabled on other versions using Enable-PSRemoting as long as PowerShell 2.0 or higher is installed. Give this a shot and let us know if it shows the missing updates. objects in $A are sent down the pipeline to ForEach-Object. {$_ -notlike "*TInput,TOutput*" -and $_ -notlike ")(.*? Your code appears to be guesswoek and not based on PowerSHell. Step 1. If you type a user name, you're prompted to enter the Please remember to vote and to mark the replies as answers if they help. # at least one found Your daily dose of tech news, in brief. If you see a Windows Server Update Service = True in the results, that means that it is set to receive updates from your WSUS server. wmic qfe list More details about Patch Installation Status can be found in the following sections of this post. Jordan's line about intimate parties in The Great Gatsby? how can i check for particular hotfix?Getting installed updates and information on a REMOTE computer.Check If Hotfix isn't Installed and Output to File - Spiceworks .Using Powershell to get KB information on remote computers[SOLVED] Silently Install Patches Remotely and Reboot - PowerShellMore . I currently use PDQ Inventory to do this. Might be worth checking out, especially if you'd like a GUI. Definitely looks into PSTools and also systeminfo, much easier. PowerShell report on applied windows updates after a date. PowerShell remoting is also more firewall friendly and is enabled by default on servers running Windows Server 2012 and higher. For example, we could distribute the wsusscn2.cab file with a regular file share, but that requires a double-hop. In the 'Load From' combo-box choose 'Remote Computer'. Change Permissions on Registry key via Command line. }else{ Thanks for contributing an answer to Server Fault! Find out symbolic link target via command line. Results are exported to CSV files, not online, and exception computers are recorded in different text files. You can use the built-in Powershell ISE, too, but it is not being developed any further. I just added the where clause to your script to match my requirement. I have a system with me which has dual boot os installed. The default is objects by ascending order and uses the Property parameter to evaluate each InstalledOn I write functions as reusable tools that I place into modules which Hope the above will be helpful. string of remote computer names. What is the exact command that you ran? If you did not have the correct version/module, Powershell would throw an error about command not found. An example of the basic syntax is get-hotfix -id KB974332 On my machine, that command returns If C:\users\xxx\Desktop\powershell\computers.txt is an actual file that contains computer names, one per line, and your account has access to it, then your code should not produce this error. It is helpful to get the specified updates from WSUS database and save to the specified path. Webinar: Reduce Complexity & Optimise IT Capabilities. Usually one-liners are something I type into the PowerShell console How secure is SecureString?. The nature of simulating nature: A Q&A with IBM Quantum researcher Dr. Jamie We've added a "Necessary cookies only" option to the cookie consent popup. "Total devices: $dev" | Out-File $output -Append # if the directory doesn't exist, then create it if (! But I used the word grep here as in "to grep" to indicate the process in stead of literally meaning the utility "grep". It's definitely present in v5.1. Use this script to copy the module to the two specified remote servers: I have a system with me which has dual boot os installed. -Credential PSCredential Specify a user account that has permission to perform this action. It only takes a minute to sign up. This is how to use the "Test" CmdLets: if (Test-Connection -ComputerName$_ -Count 1 -Quiet) { # continuehelp Test-Connection -full A Boolean is a Boolean and dies not get tested against a string. Gets the hotfixes that are installed on local or remote computers. Specifies a user account that has permission to access the computer and run commands. To use these functions, you will have to update PowerShell, or manually remove the line | Unblock-File from the PSWindowsUpdate.psm1 file. updates that arent applicable wont be installed anyway and if any of these updates are found, its Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. Do I need to run it as administrator? Install-WindowsUpdate has a parameter Computername, so you could use it like that : Install-WindowsUpdate -KBArticleID <kbID> -AcceptAll -Install -ComputerName server.domain.name 0 Likes Reply dmarquesgn replied to Harm_Veenstra May 30 2022 06:47 AM Thanks for the reply. This cmdlet is only available on the Windows platform. and was challenged. The recommended tool for writing Powershell is Visual Studio Code. Stack Exchange network consists of 181 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers. The patch mentioned above was an emergency. Luckily, we can do this easily from the PowerShell Gallery. Get-Hotfix sends the objects down the pipeline to the Sort-Object cmdlet. I'm afraid it does not do what you expect it to do. Asking for help, clarification, or responding to other answers. $totalpassed = $dev - $totalfailed PowerShell remoting is also more firewall friendly and Is it suspicious or odd to stand by the gate of a GA airport watching the planes? What is the correct way to screw wall and ceiling drywalls? The commands in this example verify whether a particular update installed. For example, run the following command: get-hotfix -id KB4012212,KB4012215,KB4015549 Hi Team, In WinUpdatesView, press F9 to open the 'Advanced Options' window. spare time. Wrap the Get-Hotfix cmdlet inside Invoke-Command to take advantage of PowerShell remoting. KB4499180 (for Windows Server 2008 SP2)KB4499175 (for Windows Server 2008 R2 x64 SP1)KB4499175 (for Windows 7 SP1)KB4500705/KB4500331 (for Windows XP SP3)KB4500705/KB4500331 (for Windows Server 2003 SP2). Reduce Complexity & Optimise IT Capabilities. of your servers. Staging Ground Beta 1 Recap, and Reviewers needed for Beta 2. first checking to see what operating system and architecture the target computer is running to then Please find the actual code of this script from Github below link https://raw.githubusercontent.com/jampaniharish/OnlineScripts/master/Get-installedPatch.ps1. there is a list as follows: computer1 computer2 etc. As part of this PowerShell script, I have created a PowerShell function get-installed patch with error handling. And what are the pros and cons vs cloud based? to the next computer once it tries to connect to one that is unreachable. The script I have written is giving me some odd results and I can not get the script to function. I had to remove the machine from the domain Before doing that . What you really should just use is pstools from sysinternals. In a technical forum questions need to be clear and complete. The Scripting Wife and I were lucky enough to attend the first PowerShell User Group meeting in Corpus Christi, for user-based installs. So after further investigation of my script it looks like when it goes through the function if the computer is active and has the patch then the script works fine with no issues. $totalfailed = (gc $machines_to_sweep).count been patched. How Intuit democratizes AI development across teams through reusability. Here, I want to install Firefox on my local machine: choco install firefox -y Really easy with psexec, but keep in mind the find command might not work unless you specify stdout instead of the weird hybrid crap. wmic qfe list brief /format:table. There are other methods which you can use to run the PowerShell script using SCCM Run Script method. get-hotfix Please feel free to inform me in time if there are any questions. PowerShell remoting enabled on the servers you want to scan. After LastPass's breaches, my boss is looking into trying an on-prem password manager. I decided to let MS install the 22H2 build. Unfortunately, this same trick does not work with the installation of the patches as remote installation via the COM object is forbidden. (Test-Path -path "$DirectoryToSaveTo")) #create it if not existing { New-Item "$DirectoryToSaveTo" -type directory | out-null } #Create a new Excel object using COM $Excel = New-Object -ComObject Excel.Application $Excel.visible = $True $Excel = $Excel.Workbooks.Add() $Sheet = $Excel.Worksheets.Item(1) $sheet.Name = 'Patch status - ' #Create a Title for the first worksheet $row = 1 $Column = 1 $Sheet.Cells.Item($row,$column)= 'Patch status' $range = $Sheet.Range("a1","f2") $range.Merge() | Out-Null $range.VerticalAlignment = -4160 #Give it a nice Style so it stands out $range.Style = 'Title' #Increment row for next set of data $row++;$row++ #Save the initial row so it can be used later to create a border #Counter variable for rows $intRow = $row $xlOpenXMLWorkbook=[int]51 #Read thru the contents of the Servers.txt file $Sheet.Cells.Item($intRow,1) ="Name" $Sheet.Cells.Item($intRow,2) ="Patch status" $Sheet.Cells.Item($intRow,3) ="OS" $Sheet.Cells.Item($intRow,4) ="SystemType" $Sheet.Cells.Item($intRow,5) ="Last Boot Time"$Sheet.Cells.Item($intRow,6) ="IP Address" #sets the font and color for the headers for ($col = 1; $col le 6; $col++) { $Sheet.Cells.Item($intRow,$col).Font.Bold = $True $Sheet.Cells.Item($intRow,$col).Interior.ColorIndex = 48 $Sheet.Cells.Item($intRow,$col).Font.ColorIndex = 34 } $intRow++ Function GetUpTime { param([string] $LastBootTime) $Uptime = (Get-Date) - [System.Management.ManagementDateTimeconverter]::ToDateTime($LastBootTime) "Days: $($Uptime.Days); Hours: $($Uptime.Hours); Minutes: $($Uptime.Minutes); Seconds: $($Uptime.Seconds)" } #This will try every computer in computers txt against the following$computers = Get-Content -Path $computerListforeach ($computer in $computers) { #If it cant find an IP address it will jump down to the catch and write PC not online#if it can find the KB it will continue down the list and write it out to the excel file#if it can find the KB it will jump to the catch see that the ip is not null so it will write out the the KB isnt found try { $IpV4 = (Test-Connection -ComputerName $computer -count 1).IPV4Address.ipaddressTOstring if ($KbInFo = Get-HotFix -Id $Patch -ComputerName $computer -ErrorAction 1) { $kbiNstall="$patch is installed" } $OS = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $Computer -ErrorAction SilentlyContinue $sheetS = Get-WmiObject -Class Win32_ComputerSystem -ComputerName $Computer -ErrorAction SilentlyContinue $sheetPU = Get-WmiObject -Class Win32_Processor -ComputerName $Computer -ErrorAction SilentlyContinue $drives = Get-WmiObject -ComputerName $Computer Win32_LogicalDisk | Where-Object {$_.DriveType -eq 3} -ErrorAction SilentlyContinue $OSRunning = $OS.caption + " " + $OS.OSArchitecture + " SP " + $OS.ServicePackMajorVersion $systemType=$sheetS.SystemType $date = Get-Date $uptime = $OS.ConvertToDateTime($OS.lastbootuptime) $sheet.Cells.Item($intRow, 1) = $computer $sheet.Cells.Item($intRow, 2) = $kbiNstall $sheet.Cells.Item($intRow, 3) = $OSRunning $sheet.Cells.Item($intRow, 4) = $SystemType $sheet.Cells.Item($intRow, 5) = $uptime $sheet.Cells.item($intRow, 6) = $IpV4 } catch { If($IpV4 -eq $null){ $sheet.Cells.Item($intRow, 1) = $computer $sheet.Cells.Item($intRow, 2) = "PC is not online"} else{ $sheet.Cells.Item($intRow, 1) = $computer $sheet.Cells.Item($intRow, 2) = "PC HotFix Not Found" $sheet.Cells.Item($intRow, 3) = $OSRunning $sheet.Cells.Item($intRow, 4) = $SystemType $sheet.Cells.Item($intRow, 5) = $uptime $sheet.Cells.item($intRow, 6) = $IpV4 } } $intRow = $intRow + 1 } $erroractionpreference = SilentlyContinue $Sheet.UsedRange.EntireColumn.AutoFit() ########################################333 ############################################################## $filename = "$DirectoryToSaveTo$filename.xlsx" #if (test-path $filename ) { rm $filename } #delete the file if it already exists $Sheet.UsedRange.EntireColumn.AutoFit() $Excel.SaveAs($filename, $xlOpenXMLWorkbook) #save as an XML Workbook (xslx) $Excel.Saved = $True $Excel.Close() $Excel.DisplayAlerts = $False $Excel.quit()[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)spps -n Excel. By clicking Accept all cookies, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. Welcome to the Snap! Credentials are stored in a PSCredential Making statements based on opinion; back them up with references or personal experience. to connect to the Windows Update servers and download the updates if found. Invoke-Command -ComputerName server01 -ScriptBlock { c:\software\installer.exe /silent } There are two important details to be aware of right away. This topic has been locked by an administrator and is no longer open for commenting. Get-HotFix, You can use it to check and run an uninstall command or as part of a SCCM Compliance Settings configuration item. Thanks Matt for your updated script, your script is little faster than mine when I tested with just few machines that will help, what I liked the most in your script is the way you handled the errors and the way you added the stats to the final CSV. The ComputerName parameter doesn't rely on Windows PowerShell remoting. Find if a Windows Update KB has been applied Method 1: Check the Windows Update history Method 2: View installed updates in Programs and Features Control Panel Method 3: Use DISM command-line How can I delete virtual networks from command line? I am trying below. If you have any updates during this process, please feel free to let me know. is enabled by default on servers running Windows Server 2012 and higher. (Get-HotFix -Id KB957095 -ComputerName $_)) { Add-Content $_ -Path ./Missing-KB957095.txt }} A place where magic is studied and practiced? installed on the local computer or specified remote computers. Sort-Object sorts Why is this the case? How to prove that the supernatural or paranormal doesn't exist? Or you can use SCCM CMPivot to get the details of Patch Installation Status. Type the NetBIOS name, an Internet Protocol (IP) address, or a fully qualified domain name (FQDN) of a remote computer. rev2023.3.3.43278. Type a user name, such as User01 or Domain01\User01, or enter a PSCredential object This script will check if the computer is pingable and if pingable connects to the remote computer to get the patch details. If gc is something other than an alias for Get-Content in your session, you may have undesired results too. I added a "LocalAdmin" -- but didn't set the type to admin. 1 -Quiet){ Install . Yes, you can add updates directly to configuration baselines, but I am still learning PowerShell and wanted to do it the hard way. Tried single and double quotes. The nature of simulating nature: A Q&A with IBM Quantum researcher Dr. Jamie We've added a "Necessary cookies only" option to the cookie consent popup. Updates supplied by Microsoft Windows The includes the asterisk (*) wildcard. parameter for targeting remote computers but more than likely it will be blocked by either a network How do I concatenate strings and variables in PowerShell? #set KB using kb followed by the KB number, #This example determines compliance in KB is installed, but can be altered to meet other purposes, SCCM Compliance Settings Scripts to Alter Service State, PowerShell Script to Automate Running ContentLibraryCleanup.exe Against All DPs in SCCM Site. my organization. The commands in this example verify whether a particular update installed. This piece of code allows me to create the remote COM object on a remote computer that then allows me to perform the audit of patches that are available to install on that computer. $machines = C:\Patching\machines.txt @Scott (and others who run into the same problem): The PS find cmdlet requires a parameter. console when Im done and the code is gone. To run on a remote machine $Hotfixes = wmic /node:SYSTEM /user:DOMAIN\USER /password:PASSWORD qfe list brief /format:csv | ConvertFrom-Csv Lee_Dailey 4 yr. ago howdy I_Am_Corgibuttz, What are some of the best ones? The Get-WUHistory cmdlet inside this module might just have everything you need. I just tested it on my own computer before adding the step of checking on a remote computer so I just typed Get-Hotfix and it returned: I did figure it out. scripts. What is the correct way to screw wall and ceiling drywalls? The script could help to get the specified KB number from client itself. This parameter does not rely on Windows PowerShell remoting. How to show that an expression of a finite type must be one of the finitely many possible values? For more information about SecureString data protection, see vegan) just to try it, does this inconvenience the caterers and staff? What video game is Charlie playing in Poker Face S01E07? Is there any updates of the case? This command gets the hotfixes and updates that are installed on the local and the remote computer. run "systeminfo" in a CMD window and it will pull back a load of statistics about your system including what patches are installed. Why is this sentence from The Great Gatsby grammatical? I realized I messed up when I went to rejoin the domain Actually We have a WSUS server in which 200 computers are reporting (existing) . Ive seen a lot of functions and scripts this week to accomplish that task, but Using grep as a verb is very common in the Unix circles I normally operate in, so I used the term more or less without thinking it might look odd to a Windows guy. I need to get all installed Windows updates with PowerShell. PowerShell PS> $A = Get-Content -Path ./Servers.txt PS> $A | ForEach-Object { if (! How can I find out which sectors are used by files on NTFS? To subscribe to this RSS feed, copy and paste this URL into your RSS reader. $Session = New-Object -ComObject Microsoft.Update.Session $Searcher = $Session.CreateUpdateSearcher () $Searcher.Search ("IsInstalled=1").Updates | ft -a Date,Title A Boolean is a Boolean and dies not get tested against a string. If you have WinRM and PSRemoting enabled on your workstations, you can use Invoke-Command to run the longer script on remote machines. An if statement uses the adjusted using the ThrottleLimit parameter. defined at the top and the Using variable scope modifier could have used to use the local variable It is easy to deploy the fix for this vulnerability as it is a direct security-only update from Microsoft from the list of May month patches. In this script, I have used win32_quickfixengineering rather than Get-hotfix, get-hotfix will also give us the same results, but it has its pros and cons. About an argument in Famine, Affluence and Morality. rev2023.3.3.43278. get-wmiobject -class win32_quickfixengineering -ComputerName 'remote computer name'. Making statements based on opinion; back them up with references or personal experience. In addition to systeminfo there is also # none found @sri sri Most of the entries in the NAME column of the output from lsof +D /tmp do not begin with /tmp. Theres no reason for that since I had try next scripts: Wildcards aren't accepted. I realized I messed up when I went to rejoin the domain Hope the above will be helpful. computer doesn't have the specified hotfix Id installed, the Add-Content cmdlet writes the . The $A variable contains computer names that were obtained by Get-Content from a text file. Invoke-Command -ComputerName $_ -ScriptBlock { How to get all installed Windows updates names and KB numbers with PowerShell? First, in an administrative PowerShell console, download and install the PSSoftware PowerShell module from the PowerShell Gallery by running Install-Module PSSoftware. Wildcards are permitted. Why are Suriname, Belize, and Guinea-Bissau classified as "Small Island Developing States"? oops, I missed some lines in the beginning which need to append to my code: document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() ); This site uses Akismet to reduce spam. The compliance can also be switched around where having the KB installed is not complaint and then a remediation script can be used to uninstall the KB. PowerShell Function to Determine the Installed VSS Providers, Retrieve Information about your Favorite Podcast with PowerShell. I don't seem to have the correct power shell module for that one. You can pipe a string containing a computer name to this cmdlet. Is it plausible for constructed languages to be used to affect thought and control or mold people towards desired outcomes? Not sure the correct way I should fix this any help would be much appreciated. PowerShell Script to Check KB installed on workstations and then output 3 files. Microsoft Scripting Guy Ed Wilson here. By clicking Post Your Answer, you agree to our terms of service, privacy policy and cookie policy. How do you know it doesn't return all updates? #### Spreadsheet Location $DirectoryToSaveTo = "$env:USERPROFILE\Downloads\" $date=Get-Date -format "yyyy-MM-d" $Filename="Patchinfo-$($date)" ###InputLocation $Computers = Get-Content "$env:USERPROFILE\Downloads\Computers.txt" # Enter KB to be checked here $Patch = 'KB4500331','KB4499164','KB4499175','KB4499149','KB4499180' # before we do anything else, are we likely to be able to save the file? One remote computer To get a full list of installed program on a remote computer, Get-WmiObject Win32_Product -ComputerName $computer computer name to a file. I'm looking to find out if a KB is installed via command line. Browse other questions tagged, Where developers & technologists share private knowledge with coworkers, Reach developers & technologists worldwide, $computers contains the list of computers where I am trying to get the info from. 1 Get-Hotfix To display only hotfixes you are looking for you can limit the result using Where-Object. obtain a list of computer names from a text file. By Why is there a voltage on my HDMI and coaxial cables? Some of SCCM features like Run a Script might not work on Windows 7 or Windows 2008. Installer (MSI) or the Windows Update site aren't returned by Flashback: March 3, 1971: Magnavox Licenses Home Video Games (Read more HERE.) Below is what ive got so far but I can seem to figure out what the issue is. You can use it to check and run an uninstall command or as part of a SCCM Compliance Settings configuration item. From the output of systeminfo you can extract the info for the KBs and set it to see if any of the KBs match and do an if statement to say yes it exists print to screen it is there and just loop through the output to say yes or no for each KB you specify. Time arrow with "current position" evolving with overlay number. run in parallel. #### Spreadsheet Location $DirectoryToSaveTo = "$env:USERPROFILE\Downloads\" $date=Get-Date -format "yyyy-MM-d" $Filename="Patchinfo-$($date)" ###InputLocation $Computers = Get-Content "$env:USERPROFILE\Downloads\Computers.txt" # Enter KB to be checked here $Patch = 'KB4500331','KB4499164','KB4499175','KB4499149','KB4499180' # before we do anything else, are we likely to be able to save the file? The array notation [-1] selects the most recent installed hotfix. Code with aliases and positional parameters shouldnt be So I put together a PowerShell script that can be used to get the Windows version for a local or remote computer (or group of computers) which includes the Edition, Version and full OS Build values. If you already have the file on the remote system, we can run it with Invoke-Command. Hess Media and Consulting, LLC. patches installed Via Quick Fix Engineering, https://raw.githubusercontent.com/jampaniharish/OnlineScripts/master/Get-installedPatch.ps1, SCCM CMPivot Fast Channel Making SCCM Fast, SCCM Run Script Deployment Step by Step Guide, PowerShell Script to Import Multiple CSV Files to Pivot Table SCCM Patch Report. Im currently working on a Powershell script that can get information about a remote computer (IP, OS Type, Ping Status, Etc.) https://community.spiceworks.com/how_to/139222-how-to-list-all-windows-updates-using-powershell?page https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-hotfix?view=p How to Manage Windows Updates Remotely on Multiple PCs. Let me know how this works for you! But, it is little challenging to get the accurate details after patch installation if any system\server is still missing this patch or not. I had to remove the machine from the domain Before doing that . Arrrrgh..what am I missing.I walked away and came back and got it to work this far: Why am I getting "At line:6 char:1+ | Select-Object Date,@{name="Operation";+ ~An empty pipe element is not allowed.At line:10 char:1+ | select Date, Status, Title | export-csv -NoType \\siilpeowsittmg\Us + ~An empty pipe element is not allowed. versions using Enable-PSRemoting as long as PowerShell 2.0 or higher is installed. This cmdlet is only available on Windows platforms. Adding multiple computers using the Add Server menu Originally, the Add Server menu only let you add one system at a time. Can I tell police to wait and call a lawyer when served with a search warrant? password. How to check your PowerShell version Launch PowerShell and enter the following command to verify the version of PS installed: $PSVersionTable.PSVersion It will display a table with the. For me, its a little more difficult to distinguish the difference between whether to use a Why are physically impossible and logically impossible concepts considered separate in terms of probability? I am trying to check updates installed onworkstations to make sure they have installed. Optionally, you can choose to temporarily stop the Windows updates service if the database file is locked. In addition, I tested it in my lab environment and I would like to share the screenshot for your reference: In this article I describe how to get a list of all installed updates of all Domain Computers using PowerShell. The Get-Hotfix cmdlet uses the Win32_QuickFixEngineering WMI class to list hotfixes that are We cannot guess at you vague "The script I have written is giving me some odd results". Get-Hotfix filters the output with the Description parameter and the string Security that "Total devices failed: $totalfailed" | Out-File $output -Append -ComputerName$_ looking for this will be passed butI'll have learned a bit. This should do the job: For whatever reason, using "find" is giving me an incorrect format error. Connect and share knowledge within a single location that is structured and easy to search. specific Windows updates that patch the WannaCry ransomware vulnerability have been installed on all What's the command-line utility in Windows to do a reverse DNS look-up? NOTE! The Get-HotFix output might vary on different operating systems. [Regex]::Matches($Error, (?<=\[)(.*? Thanks for contributing an answer to Stack Overflow! \_ ()_/ Thursday, November 7, 2019 8:52 AM 0 Sign in to vote Hi, You have a few options here: How to check Windows Update History using PowerShell https://www.thewindowsclub.com/check-windows-update-history-using-powershell Powershell must have the Hyper-V module . Hi Team, Get-hotfix -id 2887595 -ComputerName SCCM1 Change the -ID parameter to what KB article number you want to search for and then the ComputerName for the remote computer you want to check, the result should look like this if the computer has the Update installed In this case,e PowerShell can help us with more accurate details, I wrote a PowerShell script and it worked perfectly to get the details of KB number (KB4499175 or KB4499180) and installed date with computer name from remote server. Is there a solutiuon to add special characters from software and how to do it, Styling contours by colour and by line thickness in QGIS. qualified domain name (FQDN) of a remote computer. It also confirms that Get-Hotfix does not using all the aliases and positional parameters that I want since Ill simply close out of the Here is the link for PSTools (systeminfo is part of Windows)PSTools - Sysinternals toolset Opens a new window. This seems to be getting the info I needed, but for some reason, I am getting the following error: ``` Get-HotFix : The RPC server is unavailable.