使用powershell切换服务运行状态(使用UAC提示)
Switch service running state using powershell (using UAC prompts)
$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 不接受这个参数。
我想我可以 运行 Start-Process "sc"
但这违背了 powershell 的目的。
脚本的最终目标是根据当前运行ning状态切换服务的状态.
无法 运行 在非提升的 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>'
$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 不接受这个参数。
我想我可以 运行 Start-Process "sc"
但这违背了 powershell 的目的。
脚本的最终目标是根据当前运行ning状态切换服务的状态.
无法 运行 在非提升的 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>'