Solved

# Powershell Scripts Won't Run

Posted on 2010-08-26
1,587 Views
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
}
}

0
Question by:Sleestack90

LVL 2

Expert Comment

ID: 33539460
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

LVL 13

Expert Comment

ID: 33539598
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 Author Comment ID: 33559471 @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 LVL 6 Expert Comment ID: 33577318 ./psinfo.exe should be .\psinfo.exe the command software.ps1 should be .\software.ps1 Looks like its just a syntax issue when running. 0 Author Comment ID: 33579081 @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 LVL 6 Accepted Solution rwskas earned 500 total points ID: 33579450 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

Author Comment

ID: 33588139
@rwskas: bingo

Thank you very much, I'm kind of new to this and I tend to get in my own way alot.
0

Author Closing Comment

ID: 33588142
Perfect
0

LVL 6

Expert Comment

ID: 33588205
No problem - thats what we are here for! :-)
0

## Featured Post

Why would I want to create a function for tracking messages? I am glad you asked. As with most monotonous/routine tasks, human error tends to creep in after doing the same task over and over again. By creating a function, you load the function once…
This script checks a path to see if a folder exists. If the folder does exist you will get output "The folder has previously been created. No action taken" If not it will create the folder. Then adds one user modify permission to the folder. It …
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…