A blog with focus on Windows 10 and cloud <solutions
RSS icon Email icon Home icon

  • Checking Win32 application runtime dependencies in Windows 10

    Posted on March 17th, 2017 By Andreas Stenhall + No comments

    There are new WMI classes in Windows 10 that can be used to collect software inventory. The information can be displayed using PowerShell. Also, there is a feature that inventories what framework or runtime an application is dependent on, for instance which version of .NET Framework or Visual C++ Runtime and it can even see if there are dependencies for OpenSSL. Imagine having these feature in place when the HeartBleed bug appeared a few years ago.

    Display all installed applications on a Windows 10 machine:

    Get-WMIObject Win32_Installedwin32Program | select Name, Version, ProgramID | out-GridView

    Display all apps and dependent frameworks on a Windows 10 machine for a specific application (replace the ProgramID in the filter section with another one from the above example), and make sure everything is on one row:

    Get-WMIObject Win32_InstalledProgramFramework -Filter "ProgramID = '00000b9c648fd31856f33503b3647b005e740000ffff'" | select ProgramID, FrameworkName, FrameworkVersion | out-GridView

    or to bake them together to get both the application name and associated frameworks:

    $Programs = Get-WMIObject Win32_InstalledWin32Program | select Name,ProgramID
    $result = foreach ($Program in $Programs) {
    $ProgramID = $program.programID
    $Name = $program.Name
    $FMapp = Get-WMIObject Win32_InstalledProgramFramework -Filter "ProgramID = '$programID'"
    foreach ($FM in $FMapp) {
    $out = new-object psobject
    $out | add-member noteproperty Name $name
    $out | add-member noteproperty ProgramID $ProgramID
    $out | add-member noteproperty FrameworkPublisher $FM.FrameworkPublisher
    $out | add-member noteproperty FrameworkName $FM.FrameworkName
    $out | add-member noteproperty FrameworkVersion $FM.FrameworkVersion
    $out
    }
    }
    $result | out-gridView

    Now, happy hunting for runtime dependencies!

  • Joining a computer to the domain using PowerShell

    Posted on August 30th, 2011 By Andreas Stenhall + No comments

    Bumped into a problem where the user account used to join machines to the domain was limited to joining the machines to a particular OU. That makes it hard to just join a machine using the good old way i.e. System Properties and then joining the domain. This will not let me specify the OU to join and will fail and probably this is the intention with this design at this particular customer.

    But anyway thanks to a great builtin PowerShell cmdlet in Windows 7 I could get the job done in seconds. Keep in mind :)

    Add-Computer -DomainName contoso.com -Credential contoso.com\joinDomainAccount -OUPath "OU=Company,DC=contoso,DC=com"

    Reference: Microsoft TechNet