Powershell 如何使用其他帐户(和管理员权限)在ps1中启动其他ps1?

Powershell 如何使用其他帐户(和管理员权限)在ps1中启动其他ps1?,powershell,runas,admin-rights,Powershell,Runas,Admin Rights,我的一些用户的计算机上有一个bug,我需要我的用户从他们的计算机上启动一个.ps1来修复这个问题,这样我就可以在他们需要时通过NetSupport访问他们的计算机。 问题是他们没有计算机的管理员权限 这就是我已经做过的: 在.txt中加密管理员密码(此密码将由我以管理权限启动) 这部分似乎很好用。 现在,进入工作“客户”部分: 还有不起作用的(我在这里尝试了很多东西,例如: 1:当我设置本地管理员(.\administrator)时,新的powershell Windows会以管理员权限启

我的一些用户的计算机上有一个bug,我需要我的用户从他们的计算机上启动一个.ps1来修复这个问题,这样我就可以在他们需要时通过NetSupport访问他们的计算机。 问题是他们没有计算机的管理员权限

这就是我已经做过的:

  • 在.txt中加密管理员密码(此密码将由我以管理权限启动)
这部分似乎很好用。 现在,进入工作“客户”部分:

还有不起作用的(我在这里尝试了很多东西,例如:

  • 1:当我设置本地管理员(.\administrator)时,新的powershell Windows会以管理员权限启动,但不会执行file.ps1应该执行的操作,如果我设置了domain\admincount,它只会启动一个新的posershell Windows,但没有管理员权限
  • 2:当我设置本地管理员(.\administrator)时,一个新的powershell Windows将以管理员权限启动,但只有一半脚本(file.ps1)可以工作,如果我设置了domain\admincount:则与上面相同
  • 3等等
但没有什么能像预期的那样起作用。。。 如果你们有主意的话,那就太棒了

---------------------编辑---------------- 我在.ps1文件中出错了,所以

Invoke-Item (Start-Process powershell.exe -Credential $credentials ((Split-Path $MyInvocation.InvocationName) + "\\serveur\path\file.ps1" ))
本地管理员(.\administrator)可以正常工作,脚本确实以管理员权限开始,并按预期工作。 但是它不适用于域管理(domain\admin):脚本确实会启动,但没有管理员权限…

您可以尝试使用它吗

我可以按下面的方式调用它,并获得一个提升的会话

Invoke-Elevated -FilePath \\server\share\file.ps1
你能试试这个吗

我可以按下面的方式调用它,并获得一个提升的会话

Invoke-Elevated -FilePath \\server\share\file.ps1

如果有人对我找到的解决方案感兴趣,请使用本地管理员帐户:

无法使用我希望在UNC路径上执行的文件.ps1。 所以我必须先在本地计算机上复制它,执行脚本

$path="[...]\temp"
$source= "[...]file.ps1"
$destination = "c:\users\$env:USERNAME\documents"
if (!(Test-Path "$destination\Netlogon_Firewall.ps1")){Copy-Item -Path $source -Destination $destination}
然后我导入我的凭据:

$PassKey = get-content "$Path\Key.txt"
$Password = get-content "$Path\EncKey.txt" | Convertto-SecureString -Key $PassKey
$User = Read-Host "Enter the ID given by your administrator"
$credentials = New-Object System.Management.Automation.Pscredential `
-Argumentlist $User,$Password
最后,我可以使用管理员权限启动file.ps1脚本:

Start-Process -Credential $Credentials "$PSHOME\powershell.exe" -WorkingDirectory "C:\Users\$env:USERNAME" -ArgumentList "-ExecutionPolicy Bypass & '$destination\file.ps1'"

如果有人对我找到的解决方案感兴趣,请使用本地管理员帐户:

无法使用我希望在UNC路径上执行的文件.ps1。 所以我必须先在本地计算机上复制它,执行脚本

$path="[...]\temp"
$source= "[...]file.ps1"
$destination = "c:\users\$env:USERNAME\documents"
if (!(Test-Path "$destination\Netlogon_Firewall.ps1")){Copy-Item -Path $source -Destination $destination}
然后我导入我的凭据:

$PassKey = get-content "$Path\Key.txt"
$Password = get-content "$Path\EncKey.txt" | Convertto-SecureString -Key $PassKey
$User = Read-Host "Enter the ID given by your administrator"
$credentials = New-Object System.Management.Automation.Pscredential `
-Argumentlist $User,$Password
最后,我可以使用管理员权限启动file.ps1脚本:

Start-Process -Credential $Credentials "$PSHOME\powershell.exe" -WorkingDirectory "C:\Users\$env:USERNAME" -ArgumentList "-ExecutionPolicy Bypass & '$destination\file.ps1'"

set executionpolicy remotesigned
可能会有帮助谢谢你的回答,但我在哪里可以使用它?因为您需要管理员权限来修改executionpolicy,而这正是关键所在,您可以从没有管理员权限的帐户使用加密凭据并以管理员身份重新启动powershell(我非常确定我写的一些示例可能会使用我的管理员帐户重新启动powershell,但不使用管理员权限…不确定我是否清楚我要做什么…:/nd需要在远程计算机上启动Netlogon服务。遗憾的是,这是我试图解决的问题:这里是我的文件。ps1:
Powershell设置服务-名称Netlogon-StartupType自动-状态运行设置NetFirewallProfile-配置文件域,公共启用False
哦,哇!我刚刚又读了一遍我刚刚写的内容,我注意到我已经防火墙部分出错:
Powershell设置NetFirewallProfile-Profile域,启用公共的False
它应该是域和私有的,而不是公共的!这就是为什么我认为点“2”起了一半作用!它可以与本地管理员一起工作(.\administrator)…但是有什么想法可以让它与域帐户管理员一起工作吗?
设置executionpolicy remotesigned
可能会有帮助谢谢你的回答,但是我在哪里可以使用它呢?因为你需要管理员权限来修改executionpolicy,这就是关键所在,可以从没有管理员权限的帐户使用加密的凭据和管理员身份(我非常确定我写的一些示例可能会使用我的管理员帐户重新启动powershell,但不使用管理员权限…不确定我是否清楚我要做什么…:/nd需要在远程计算机上启动Netlogon服务。遗憾的是,这是我试图解决的问题:这里是我的文件。ps1:
Powershell设置服务-名称Netlogon-StartupType自动-状态运行设置NetFirewallProfile-配置文件域,公共启用False
哦,哇!我刚刚又读了一遍我刚刚写的内容,我注意到我已经防火墙部分出错:
Powershell设置NetFirewallProfile-Profile域,启用公共的False
它应该是域和私有的,而不是公共的!这就是为什么我认为点“2”起了一半作用!它可以与本地管理员一起工作(.\administrator)…但有没有让它与域帐户管理员一起工作的想法?似乎很有说服力,但我不确定如何使用它,因为它需要管理员权限才能工作,关键是我需要使用加密的$credentials作为“DomainAdmin”文件运行。ps1:“.DESCRIPTION[…]重要的是,该命令确实使用当前用户上下文。这意味着当前用户需要本地系统的管理权限。如果未指定文件路径或脚本块,则当前正在运行的进程将以管理员身份运行。“@“Karthik SN”:如果这可以在其他时间帮助您,这就是我在计算机上拥有管理员权限时重新启动powershell文件的方式(因此您只需执行该文件,它就会重新启动)
Start-Process -Credential $Credentials "$PSHOME\powershell.exe" -WorkingDirectory "C:\Users\$env:USERNAME" -ArgumentList "-ExecutionPolicy Bypass & '$destination\file.ps1'"