UACが有効な環境では管理者権限が必要な操作をスクリプトから実行させようとすると失敗します。これを回避するためにはきちんと「昇格」させてあげなければいけません。

VBScriptで昇格させる方法はかなり前に以下の日記に書きました。

- [Windows VistaでのWSH(VBScript)の管理者権限への昇格方法 - ebi's diary - インフラエンジニアの子育てなどの日記(2008-08-13)](http://ebi.dyndns.biz/diary/20080813.html)

同様にPowerShellでも昇格させたい場合にはStart-Processの-Verbオプションに「RunAs」という引数を渡すことで実現可能です。ヘルプにも以下のように書かれています。

Starts a PowerShell process with “Run as Administrator” permissions.

PS C:>start-process powershell.exe -verb runas VBScript, PowerShellそれぞれの私が良く使用するスニペットを貼り付けておきます。どちらも自分で書いたのではなく、どこかのコードを参考にさせてもらったものだったと思いますが、失念してしまいました・・・。

vbscript

PowerShell