Quick Links

PowerShell can be extremely useful for a lot of everyday tasks as is, but if you need to tweak some functions with a bit of safety in mind, then how do you define a function so that it requires elevation? Today's SuperUser Q&A post has the answer to a curious reader's question.

Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-driven grouping of Q&A web sites.

The Question

SuperUser reader Vlastimil wants to know how to define a PowerShell function that requires elevation:

Since I cannot find any alternatives to Linux's sudo elevation command, I have the following question. How do I define a PowerShell function that requires elevation, as in activating a UAC prompt on my Windows 8.1 Pro, 64-bit system? For example, say I run the following function:

With the following results:

To be completely clear, if I run PowerShell as "user", then run the aforementioned function system-check, I want the function to elevate in order to be able to execute the command (I want the UAC prompt to appear).

How do you define a PowerShell function that requires elevation?

The Answer

SuperUser contributor Ashton has the answer for us:

To run a specific command from an elevated window:

For example:

To run a specific script from an elevated window:

To run an entire PowerShell session that prompts the UAC:

A function to return $True or $False if the current window is running with elevated permissions:

To ensure a script is only run As Admin, add this to the beginning:

In PowerShell v4.0, the above can be simplified by using a #Requires statement:

Source: Run with Elevated Permissions [SS64.com]


Have something to add to the explanation? Sound off in the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.