tatortot
tatortot

Reputation: 35

Powershell: Running a .msc applet as another user

I'm currently writing a powershell script that asks for a single set of admin credentials, and uses those to run relevant applications, pulled from a network-hosted CSV. When I try to run

Start-Process $tools[$userInput-1].path.toString() -credential $credential

(where $tools is returning "C:\Program Files\Microsoft\Exchange Server\V14\Bin\Exchange Management Console.msc") I get the error below

Start-Process : This command cannot be executed because the input "C:\Program Files\Microsoft\Exchange Server\V14\Bin\Exchange Management Console.msc" is an Invalid Application.  Give a valid application and Run your command again.
At line:1 char:14
+ Start-Process <<<<  "C:\Program Files\Microsoft\Exchange Server\V14\Bin\Exchange Management Console.msc" -credential
Get-Credential
    + CategoryInfo          : InvalidOperation: (:) [Start-Process], InvalidOperationException
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand

If I need to, I'll just write a .bat file and run that, but I'd rather avoid that whenever possible.

And the reason I'm not using Invoke-Item is because it can't take -Credential, even if the man file says otherwise.

Upvotes: 1

Views: 9558

Answers (1)

David Martin
David Martin

Reputation: 12248

.msc is a saved console file, the host of which is mmc, so to start this from powershell you could use syntax similar to the following:

$mmcPath = "C:\Windows\System32\mmc.exe"
$mscPath = "C:\Program Files\Microsoft\Exchange Server\V14\Bin\Exchange Management Console.msc"
Start-Process -FilePath $mmcPath -ArgumentList $mscPath

Upvotes: 2

Related Questions