使用powershell(使用UAC提示)切换服务运行状态



$serviceName = "wsearch"
$isRunning = Get-Service | Where-Object {$_.Status -eq "Running" -and $_.Name -eq $serviceName}
$isStopped = Get-Service | Where-Object {$_.Status -eq "Stopped" -and $_.Name -eq $serviceName}
if ($isStopped) {
Start-Service -InputObject $isStopped
Start-Sleep -s 10
}
if ($isRunning) {
Stop-Service -InputObject $isRunning
Start-Sleep -s 10
}

我想运行这个脚本,但我不想设置管理员执行策略(设置为最大限制(,而常规用户策略是宽松的。

我想以普通用户的身份运行该脚本,并为每个命令触发UAC提示(类似于-Verb RunAs(,但是,启动服务不接受此参数

我想我可以运行Start-Process "sc",但这违背了powershell的目的。

脚本的最终目标是根据当前运行状态切换服务的状态。

没有办法在非提升的powershell会话中运行提升的一次性命令(作为admin(。这将类似于Linux中的"sudo",而在Windows世界中根本不存在。相反,您可以使用以下内容以管理员身份启动powershell会话,并在那里运行命令。您不限于呼叫"sc">

Start-Process -Verb RunAs -FilePath 'powershell' -Arguments '-Command <your commands>' 

要使用提升的权限运行powershell脚本,可以用-Command代替-File(但-Command <path to file>也可以(

Start-Process -Verb RunAs -FilePath 'powershell' -Arguments '-File <path to script>' 

最新更新