powershell - 使用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-Service 不接受此参数。
我想我可以运行 aStart-Process "sc"
但这违背了 powershell 的目的。
该脚本的最终目标是根据当前运行状态来切换服务的状态。
解决方案
无法在非提升的 powershell 会话中运行提升(作为管理员)的一次性命令。这类似于 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>'
推荐阅读
- actions-on-google - smart-home-nodejs 和 actions-on-google-nodejs 之间的区别
- java - Jython - 在 Java 中调用 Python 类
- php - 自定义循环上的 Wordpress 分页
- git - 使用 git 子模块 foreach 的 Bitbucket 管道
- r - 在 R 中使用 N-Grams 创建文档术语矩阵
- php - Laravel Auth Contracts 中的函数顺序是什么?
- python - 用 re.sub 替换多行模式
- ruby-on-rails - 将另一个字段插入 GET 响应 JSON
- php - 如何使用 PHP 删除文件中的前 11 行?
- angular - 无法在 Angular 6 项目中使用 Karma-jasmine 测试工具测试动态内容