2016-04-06 60 views
0


好的,所以这一直困扰着我一段时间,现在我已经尝试了太多东西。

我想运行一个PowerShell脚本 - 我的用户帐户是一个常规的域名,但它是我的电脑上的本地管理员。因此,我创建了一个PowerShell脚本,提示我输入凭据(在其中键入我的域管理员帐户的凭据)以用于调用需要此域管理员提升的另一个脚本。 这个脚本是这样的:尽管是管理员,访问被拒绝到本地主机 - PowerShell

Invoke-Command -FilePath "C:\Temp\script.ps1" -ComputerName localhost -Credential Get-Credential 

这里script.ps1是需要域管理员海拔脚本。
执行在提示符下显示脚本结果的凭证,然后以下错误:

[localhost] Connecting to remote server localhost failed with the following error message : Access is denied. 

我试着.bat文件看起来像这样瞎搞:

SET ThisScriptsDirectory=%~dp0 
SET PowerShellScriptPath=%ThisScriptsDirectory%script.ps1 PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%PowerShellScriptPath%""' -Verb RunAs}"; 

藏汉,但我无法实现它 - 它不会将脚本提升到域管理员级别。
然而,最后,我需要提及的是,如果我使用域管理员标高打开PowerShell,导航到C:\ Temp \ script.ps1并通过。\ script.ps1执行它,那么我想要使用域提升运行的脚本有效。

有什么建议吗?

+0

如果您只是试图在本地机器上执行脚本,为什么要使用invoke-command?您可以运行该脚本并在您的PowerShell主机中将参数传递给它。 –

回答

1

如果您拥有本地管理权限,请以管理员身份运行powershell并运行Invoke-Command而不使用-Credential标志。

如果您只在本地运行脚本,则不需要Invoke-Command。你最好只是运行脚本并将参数传递给它。

+0

本地管理权限是不够的,我需要我的域管理员的权利。 – zniwalla

+0

将域管理员作为本地管理员添加到本地计算机,像其他用户一样运行powershell(右键单击以在上下文菜单中以'另一个用户身份运行...')输入DA凭据,然后运行脚本。我在经常使用我的许多管理账户进行交易,AD和域本地管理员账户时这样做。 –

0

那么,如果我理解正确,你做错了。

您提供的凭证用于访问本地主机(您不需要BTW)。脚本仍然执行未升级。有两种解决方案:

  • 您需要提升powershell本身并执行脚本。
  • 您需要更改脚本,以便它自己接受Credential参数并使用它来访问事物。除非您演示剧本,否则我无法对其进行说明。

可以提升外壳采用:

start powershell -verb Runas 

这里的问题是,除非你禁用UAC,它会提示你。不幸的是,我不知道这个简单的方法。一个可靠的方法是将脚本添加到任务计划程序并将任务设置为运行提升,然后运行并删除任务。所有这些都可以自动化。这是UAC系统不幸设计的结果(Linux上的sudo服务于相同的目的,会将响应缓存一段时间,以便后续命令不会提示)。这会去是这样的:

schtasks /Create /TN runner ... /TR powershell -File script.ps1 /RU username /RP password /RL HIGHEST 
    schtasks /run runner 
    schtasks /delete runner 
+0

我已经尝试了你的第一个解决方案 - 如前所述 - 但我无法想出一个方法来自动化该过程。它需要提升为域管理员,而不是本地管理员。 该脚本正在AD中创建一个用户并修改其他AD和Exchange的东西,这是为域管理员保留的任务,并且不适用于我的本地管理员。 – zniwalla

+0

这是不相关的,如果它在域或本地。只需使用'/ RU domain \ username'。你的脚本也可以接受'-Credential'参数,并且用'Get-Credential'传递它。然后,您可以使用'schtasks.exe'(您将必须提取密码)或接受凭证的较新的TaskScheduler cmdlet(> = Win8)。 – majkinetor

+0

好吧,试试看:'schtasks/Create/TN createUser/TR“powershell -File script.ps1”/ RU domain \ user/RP/RL HIGHEST/SC MONTHLY'但它似乎并没有执行脚本。当我运行任务时,cmd会输出:'SUCCESS:试图运行计划任务“createUser”。' – zniwalla

0

一个题目说帮我(我也有类似的情况)是部分About Remote Troubleshooting“HOW TO启用远程FOR非管理用户”。基本上,它会告诉您执行PS命令:Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI,并向您尝试使用它的用户授予执行权限。

相关问题