如何检查PowerShell脚本是否正在以管理员权限运行
admin
2023-08-03 02:22:53
0

Windows 11 Pro ISO文件在哪下载最新版?如何下载原装纯净版Win11 ?点击进入   持续更新!

如何检查PowerShell脚本是否正在以管理员权限运行

如果使用PowerShell在Windows上自动执行管理功能,有时检查脚本是否在本地管理员帐户的上下文中运行可能很有用。这就是所谓的“跑步升高”或“升高”。许多Windows 10配置设置,尤其是那些在系统范围内且影响所有用户的配置,都需要管理员权限才能更改。

但是PowerShell没有cmdlet或内置函数,该函数无法让您检查登录用户是否是Administrators组的成员,这可能导致脚本失败。为了解决该问题,您可以构建一个功能来检查登录用户的安全状态。在本文中,我将向您展示如何创建函数以及如何在代码中调用它。

使用.NET WindowsIdentity类检查高度

PowerShell基于.NET,因此,当没有cmdlet来解决问题时,它使我们可以调用.NET API。.NET WindowsIdentity类(在.NET和.NET Core中可以访问)使您执行各种检查,包括获取Windows帐户令牌以及检查用户是否具有提升的权限。

第一步是使用WindowsIdentity类创建一个新的PowerShell对象,其中包含有关已登录用户的安全信息。我们分两个步骤进行操作。第一步是获取有关当前用户的信息,并将其存储在变量($ id)中。然后使用这些信息,创建一个新的PowerShell对象($ p),我们稍后使用。

PowerShell

1
2
3

$id = [System.Security.Principal.WindowsIdentity]::GetCurrent()

$p = New-Object System.Security.Principal.WindowsPrincipal($id)

现在,我们可以使用IF / ELSE语句确认登录用户的状态。如果用户是管理员,我们将“ True”写入管道。否则,我们写“ False”。

PowerShell

1234567 if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))   { Write-Output $true }else   { Write-Output $false }

现在,让我们将所有代码放在一起以定义函数并为其命名。我们称之为Check-IsElevated

PowerShell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

function Check-IsElevated

 {

    $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()

    $p = New-Object System.Security.Principal.WindowsPrincipal($id)

    if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))

   { Write-Output $true }

    else

   { Write-Output $false }

 }

从PowerShell代码中调用函数

剩下要做的就是调用该函数以检查用户是否是管理员。如果用户不是管理员,我们可以将IF语句与-NOT运算符一起使用,以调用该函数并抛出错误以停止脚本。

PowerShell

1
2
3

if (-not(Check-IsElevated))

 { throw \”Please run this script as an administrator\” }

如何检查PowerShell脚本是否正在以管理员权限运行如何检查PowerShell脚本是否正在以管理员权限运行如何检查PowerShell脚本是否正在以管理员权限运行

如果用户是管理员,PowerShell将继续并运行脚本的其余部分。

下载最新版Windows 11 Pro ISO文件:点击进入   持续更新原装纯净版Win11 

相关内容

热门资讯

Windows 11 和 10... Windows 11/10 文件夹属性中缺少共享选项卡 – 已修复 1.检查共享选项卡是否可用 右键...
Radmin VPN Wind... Radmin VPN 是一款免费且用户友好的软件,旨在牢固地连接计算机以创建一个有凝聚力的虚拟专用网...
如何修复 Steam 内容文件... Steam 内容文件锁定是当您的 Steam 文件无法自行更新时出现的错误。解决此问题的最有效方法之...
事件 ID 7034:如何通过... 点击进入:ChatGPT工具插件导航大全 服务控制管理器 (SCM) 负责管理系统上运行的服务的活动...
Hive OS LOLMine... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...
在 Windows 11 中打... 什么是链路状态电源管理? 您可以在系统控制面板的电源选项中看到链接状态电源管理。它是 PCI Exp...
如何在 iPhone 14 P... Apple 的 iPhone 14 Pro 是第一款配备 48MP 传感器的 iPhone。所有以前...
在 iCloud 上关闭“查找... 如果您是 Apple 的长期用户,您肯定会遇到过 Find My 应用程序,它本机安装在 iPhon...
如何在电报Telegram中隐... 点击进入:ChatGPT工具插件导航大全 在Android上的电报中隐藏您的电话号码 您可以通过切换...
Hive OS 部署 PXE ... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...