I tried to make minimal changes and didn't test. My bad. Here is a much shorter
(and working) solution. Note the dependence on a tuple assignment. Not very
common, but very useful.
function Start-Elevated
{
$executable, $arguments = $args
Start-Process -Verb RunAs -FilePath $executable -ArgumentList
$arguments
}
From: [email protected] [mailto:[email protected]] On
Behalf Of Damien Solodow
Sent: Thursday, October 9, 2014 11:39 AM
To: [email protected]
Subject: [powershell] RE: Better way to accomplish this?
I forgot about $args. :)
The main issue/concern I had with the way I was doing it was that I had to
mostly duplicate the Process{} in the If..Else and I was hoping there was a
"cleaner" way to do it.
Although.. I tested the function you provided, and if I do "Start-elevated
-executable notepad test.txt" it tells me that A positional parameter cannot be
found that accepts argument 'test.txt'
DAMIEN SOLODOW
Systems Engineer
317.447.6033 (office)
317.447.6014 (fax)
HARRISON COLLEGE
From: [email protected]<mailto:[email protected]>
[mailto:[email protected]] On Behalf Of Michael B. Smith
Sent: Thursday, October 9, 2014 11:24 AM
To: [email protected]<mailto:[email protected]>
Subject: [powershell] RE: Better way to accomplish this?
There is already a built-in $args variable that accomplishes the same thing. To
use the same function, formatted the way I prefer is below.
But the question really is (since formatting is a religious argument, not a
capability argument) - what problems/concerns do you have with the script/link
you posted? What challenge do you need to overcome?
Function Start-Elevated
{
[CmdletBinding()]
Param(
[parameter(Mandatory =
$true,ValueFromPipeline=$true,Position=0)][String]$Executable
)
If( !$args -or $args.Count -eq 0 )
{
Start-Process -Verb RunAs -FilePath $Executable
}
Else
{
Start-Process -Verb RunAs -FilePath $Executable -ArgumentList $args
}
}
From: [email protected]<mailto:[email protected]>
[mailto:[email protected]] On Behalf Of Damien Solodow
Sent: Thursday, October 9, 2014 11:00 AM
To: [email protected]<mailto:[email protected]>
Subject: [powershell] Better way to accomplish this?
I'm creating a function to invoke a specified executable in an elevated session.
The main obstacle right now is around passing parameters (arguments) to the
process I'm launching.
I have a way that works, but I'm wondering if there is a better way to
accomplish it:
https://gist.github.com/dsolodow/6dfcfb3e413ae2fec5a2#file-sudo-function
DAMIEN SOLODOW
Systems Engineer
317.447.6033 (office)
317.447.6014 (fax)
HARRISON COLLEGE
500 North Meridian St
Suite 500
Indianapolis, IN 46204-1213
www.harrison.edu<http://www.harrison.edu/>
================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1
================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1
================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1
================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1