java shell 切换用户_以管理员用户身份重新启动PowerShell脚本

我有一些我们需要部署软件的计算机系统 . 我一直在使用一种简单的方法来检测用户是否是本地管理员,然后检测他们是否具有管理员权限 . 如果需要,脚本将使用提升的权限重新启动 . 如果用户不是本地管理员,则脚本将使用其他凭据(本地管理员)重新启动 . 该脚本适用于具有更高版本PowerShell的系统,如Windows 8和Windows 10 .

问题是当用户不是管理员且脚本在Windows 7上运行时 . 脚本使用 $PSScriptPath 重新启动脚本 . 我不认为这在早期版本的PowerShell中有效 . 所以如果主要的PowerShell版本是<3,我尝试自己设置 $PSScriptRoot . 然后问题是脚本卡在某种循环中,它只是不断打开和关闭窗口然后我必须杀死它...如果我不喜欢定义 $PSScriptRoot 我收到错误

无法将参数绑定到参数'Path',因为它为null

我假设这是因为在PowerShell 2.0中没有定义 $PSScriptRoot .

这是我正在尝试做的一个例子:

#Check if PowerShell version is greater than 2. If not, set $PSSriptRoot.

if ($PSVersionTable.PSVersion.Major -lt 3) {

$PSScriptRoot = Split-Path -Parent $MyInvocation.MyCommand.Definition

}

#Check if the user is a local admin. If they are, set $LocalAdmin to $True.

$LocalAdmin = $false

if ((net localgroup administrators) -match ([System.Environment]::UserDomainName + "\\" + [System.Environment]::Username)) {

$LocalAdmin = $true

}

if ($LocalAdmin) {

#Check if the local admin needs to run the script as administrator

if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {

$arguments = "& '" + $MyInvocation.MyCommand.Definition + "'"

Start-Process powershell -Verb runas -ArgumentList $arguments

break

}

} else {

#Not a local admin. Relaunch script as admin user.

Start-Process -Credential $credential (Join-Path $PSHome powershell.exe) -ArgumentList (@("-File",

(Join-Path $PSScriptRoot $MyInvocation.MyCommand)) + $args)

exit

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Microsoft Windows PowerShell 是一种新的命令行外壳和脚本语言,用于进行系统治理和自动化。Windows PowerShell 建立在 .NET Framework 的基础上,IT 专业人员可通过命令脚本来治理计算机,从而通过系统自动化来提高工作效率。 Windows PowerShell 包括: * 129 个命令行工具(称为“cmdlet”),用于执行常见系统治理任务,如治理服务、进程、事件日志、证书、注册表以及使用 Windows Management Instrumentation (WMI)。 * 采用标准命名约定和通用参数的命令行工具,易于把握和使用;以及用于对数据和对象进行排序、筛选以及格式设置的简便工具。 * 对现有脚本语言、现有命令行工具以及多种 Windows 版本的支持,其中包括 Windows XP、Windows Server 2003、Windows Vista 以及 Windows Server(代码名称为“Longhorn”)。 * 方便的功能,使用户能够浏览数据存储(如注册表和证书存储),就像面对文件系统一样。 * 用于治理位于不同存储中以及采用不同格式的 Windows 数据的标准实用程序,这些数据包括 Active Directory (ADSI)、Windows Management Instrumentation (WMI)、组件对象模型 (COM) 对象、ActiveX 数据对象 (ADO)、HTML 和 XML。 * 在命令行进行的高级表达式分析和 .NET 对象处理,其中包括对对象进行流水线处理以帮助提高 IT 专业人员的工作效率。 * 可扩展的接口,使独立软件供给商和企业开发人员能够构建自定义 cmdlet 以满足特有的应用程序和系统治理要求。 安装本更新程序后,可能需要重新启动计算机。我们根据 Windows Vista 许可条款向您提供本更新程序并授予您使用许可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值