运行提升的会话时加载不同 Powershell 配置文件的技术是什么



如果我启动一个提升的Powershell会话,我想在我的个人资料中包含一些内容,例如连接到映射的网络驱动器,以及作为奖励更改提示的颜色以提醒我我令人敬畏的提升能力。

如果我创建一个前面有#Requires -RunAsAdministrator的模块,然后将此行添加到我的 profile.ps1 文件中

Import-Module ($PSScripts + "elevated.ps1");

它对于提升的会话来说做得很好,但是每次我打开正常会话时,我都会收到一条大的红色错误消息,这有点不是最佳的。

Import-Module : The script 'elevated.ps1' cannot be run because it contains a "#requires" statement for running as Administrator. The current Windows
PowerShell session is not running as Administrator. Start Windows PowerShell by  using the Run as Administrator option, and then try running the script again.
At C:Userssdixon.MVDocumentsWindowsPowerShellprofile.ps1:22 char:3
+   Import-Module ($PSScripts + "elevated.ps1") -ErrorAction silentlyco ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : PermissionDenied: (elevated.ps1:String) [Import-Module], ScriptRequiresException
+ FullyQualifiedErrorId : ScriptRequiresElevation,Microsoft.PowerShell.Commands.ImportModuleCommand

即使我尝试使用:

Import-Module ($PSScripts + "elevated.ps1") -ErrorAction silentlycontinue;

有没有办法检测当前会话是否升高?

看起来您可以按如下方式检查管理员权限:

If (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")){
Import-Module ($PSScripts + "elevated.ps1")
} Else {
Write-Warning 'You do not currently have Administrator rights.'
}

来源: https://blogs.technet.microsoft.com/heyscriptingguy/2011/05/11/check-for-admin-credentials-in-a-powershell-script/

他还编写了一个Test-IsAdmin函数,可在脚本库中找到:https://gallery.technet.microsoft.com/scriptcenter/1b5df952-9e10-470f-ad7c-dc2bdc2ac946

最新更新