$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>'