Enrico Cortinovis
Enrico Cortinovis

Reputation: 861

"Unable to find specified file" - Powershell

I wrote this function in my powershell profile:

function start {
    if ($args[0] == "blender") {
        Invoke-Item 'C:\Program Files\Blender Foundation\Blender 2.90\blender.exe'
    }
}

It gives me the error below on line 1, at character 1:

Unable to find specified file

The file path is correct, since if I copy and paste the code Invoke-Item ... in my powershell it opens Blender normally. What can the problem be?

Thank you!

Upvotes: 0

Views: 659

Answers (1)

vonPryz
vonPryz

Reputation: 24091

This happens, as your function name collides with Start-Process.:

get-alias -Name start

CommandType     Name                               Version    Source
-----------     ----                               -------    ------
Alias           start -> Start-Process

Renaming the function is the first step for correction like so,

function start-myApps {
    if ($args[0] == "MyApplication") {
        Invoke-Item 'C:\Program Files\MyApplication\MyApplication.exe'
    }
}

But that isn't enough, as it gives another an error:

Start-MyApps "MyApplication"
= : The term '=' is not recognized as the name of a cmdlet, function, script file, or operable program. 
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:2 char:19
+     if ($args[0] == "MyApplication") {
+                   ~
    + CategoryInfo          : ObjectNotFound: (=:String) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : CommandNotFoundException

This one is caused because Powershell's equality comparison operator is -eq, not ==.

The working version has different name and operator like so,

function start-myApps {
    if ($args[0] -eq "MyApplication") {
        Invoke-Item 'C:\Program Files\MyApplication\MyApplication.exe'
    }
}

Upvotes: 2

Related Questions