windows - 如何在powershell中测试布尔值?
问题描述
我有一个 powershell 脚本,旨在确保有人以管理员身份运行该脚本。
变量 $currentPrincipal 返回真或假。
这是代码:
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
$currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
If ($currentPrincipal -eq $true) {
Write-host "yay"
}
Else {
Write-Host "boo"
}
但是,当以管理员身份运行并且 currentPrincipal 为 true 时,它仍然会落入 else ... 这是 CLI,它显示:
PS C:\WINDOWS\system32> C:\Users\dogzilla\Desktop\SetSQLServerToManual.ps1
True
boo
我的问题是,在 powershell 中评估布尔值的正确方法是什么?
解决方案
您当前正在调用WindowsPrincipal.IsInRole
,它将输出Boolean
结果。此外,$currentPrincipal
is 类型System.Security.Principal.WindowsPrincipal
,它不是Boolean
. 我会修改您的代码以将结果存储IsInRole()
为变量并检查它。
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
$checkRole = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
If ($checkRole -eq $true) {
Write-host "yay"
}
Else {
Write-Host "boo"
}
推荐阅读
- python - osmnx simple_graph 不会删除所有不是交集的节点
- jhipster - 使用 JDL 修改 JHipster 实体的正确程序
- javascript - 删除 React Native 中每个 ListItem/Flatlist 行底部多余的空格?
- javascript - 在 setTimeout 中设置为 true 的变量始终为 false?
- python - 当值更改和时间超过条件时,Pandas 数据帧中的增量计数
- python - 为什么使用描述符可以引入 __slots__?
- go - 如何使用 ReverseProxy 平衡跟踪连接数
- ios - SwiftUI - 隐藏视图时的动画
- python - 如何将 Pandas 系列转换为数据框
- javascript - 如何转换为高阶函数?