Powershell Scripts Won't Run

I have the following script that uses PSinfo to gather the software information about a computer and displays it to the screen as output. However it will not run.

I have tired this on two computers, both of which have a 'Remote Signed' execution policy.

Here is the Script:

$computersToQuery = ("Computer1","Computer2","Computer3")

$softwareInventory = @{}
foreach ($computer in $computersToQuery) {
   $psinfoOutput = ./psinfo.exe -s Applications \\$computer

   $foundSoftwareInventory = 0
   $computerName = ""
   foreach ($item in $psinfoOutput) {
      if ($foundSoftwareInventory -eq 1) {
         # Force the results to a string
         # Remove any single quotes which interfere with T-SQL statements
         # Load the result into a hash whereby removing any duplicates
         [string]$softwareInventory[$computerName][$item.Replace("'","")] = ""
      }

      if ($item -like "System information for *") {
         $computerName = $item.Split("\")[2].TrimEnd(":")
      } elseif ($item -eq "Applications:") {
         $foundSoftwareInventory = 1
         $softwareInventory[$computerName] = @{}
      }
   }
}

foreach ($computer in $softwareInventory.Keys) {
   foreach ($softwareItem in $softwareInventory[$computer].Keys) {
      $computer + ":" + $softwareItem
   }
}

Sleestack90Asked:
Who is Participating?
 
rwskasConnect With a Mentor Commented:
Ok, the error is occuring because it cannot find .\psinfo.exe
So, I would changed .\psinfo.exe with the full path to that executeable:
$psinfoOutput = C:\somepath\somefolder\psinfo.exe -s Applications \\$computer
0
 
AussieClintCommented:
Are there any error messages?
Is this a script you have downloaded directly from the internet? If so, the script will be blocked from running. Right click the script and select Properites, on the General tab in the bottom right corner will be an Unblock button. Click the button and click OK. The script should now run. If this is the problem.
0
 
soostibiCommented:
If it gives output about the installed software, then it is OK. The psinfo.exe gives some information (header, copyright, etc.) that is considered as errors by PowerShell, but I think we can not do much about that, but modify the 5th line to:
   $psinfoOutput = ./psinfo.exe -s Applications \\$computer 2>$null
This supresses that error-like output.
0
Problems using Powershell and Active Directory?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

 
Sleestack90Author Commented:
@AussieClint: I copied and pasted it, so there isn't any 'unblock' on this particular file....but good thought


Here are some error messages, which will probably help narrow it down some...sorry I didn't provide these before:


The term './psinfo.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check th
e spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\Scripts\Software.ps1:5 char:32
+    $psinfoOutput = ./psinfo.exe <<<<  -s Applications \\$computer
    + CategoryInfo          : ObjectNotFound: (./psinfo.exe:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Scripts> software.ps1
The term 'software.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check th
e spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:13
+ software.ps1 <<<<
    + CategoryInfo          : ObjectNotFound: (software.ps1:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException


Suggestion [3,General]: The command software.ps1 was not found, but does exist in the current location. Windows PowerShe
ll doesn't load commands from the current location by default. If you trust this command, instead type ".\software.ps1".
 See "get-help about_Command_Precedence" for more details.
PS C:\Scripts>
0
 
rwskasCommented:
./psinfo.exe should be .\psinfo.exe
the command software.ps1 should be .\software.ps1

Looks like its just a syntax issue when running.
0
 
Sleestack90Author Commented:
@rwskas:

I made the changes you mentioned, but I am still not having any success.

PS C:\Scripts> .\software.ps1
The term './psinfo.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check th
e spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\Scripts\Software.ps1:5 char:32
+    $psinfoOutput = ./psinfo.exe <<<<  -s Applications \\$computer
    + CategoryInfo          : ObjectNotFound: (./psinfo.exe:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Scripts> .\software.ps1
The term '.\psinfo.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check th
e spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\Scripts\Software.ps1:5 char:32
+    $psinfoOutput = .\psinfo.exe <<<<  -s Applications \\$computer
    + CategoryInfo          : ObjectNotFound: (.\psinfo.exe:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Scripts>
0
 
Sleestack90Author Commented:
@rwskas: bingo

Thank you very much, I'm kind of new to this and I tend to get in my own way alot.
0
 
Sleestack90Author Commented:
Perfect
0
 
rwskasCommented:
No problem - thats what we are here for! :-)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.