为什么逐行运行 Powershell 脚本可以工作,但通过执行脚本文件却不行?

为什么逐行运行 Powershell 脚本可以工作,但通过执行脚本文件却不行?

在 Windows 7 Prof 中,在 Windows Powershell_ISE(以管理员身份)中执行 Powershell(版本 3)命令会产生预期结果(将域用户添加到本地/计算机管​​理员组),但从文件夹中的脚本 .ps1 文件启动它却C:\Users\myDomainUser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup不会产生预期结果!?

$objGroup = [ADSI]("WinNT://myComputerName/Администраторы")'Administrators in Russian
$objUser = [ADSI]("WinNT://myDomainName/myDomainUser")
$objGroup.PSBase.Invoke("Add", $objUser.PSBase.Path)

为什么?
如何在 Windows 7 重启时更好地将域用户添加到本地管理员组?

答案1

出于安全原因(以及脚本执行策略),Microsoft 已将 .ps1 文件设置为使用记事本打开。(愚蠢的 Microsoft。)计划任务可能是更好的解决方案,但如果您想从启动文件夹启动脚本,我建议在启动时放置脚本的快捷方式,并将脚本存储在其他位置。我使用的快捷方式如下所示:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file "C:\Scripts\Powershell\Tool.ps1"

如果您使用此语法,请注意,您可能想要传递给 powershell 的任何其他选项都必须放在 -file 选项之前。-file 之后的任何内容都被解释为脚本的路径或要传递给脚本的选项/参数。

答案2

您可能想尝试使用任务计划程序运行它。

启动任务计划程序(开始菜单、所有程序、附件、系统工具、任务计划程序)。在右侧面板中,选择“创建任务”。输入任务名称。如果需要,可更改用户。选择“以最高权限运行”。在触发器选项卡中,根据需要为“登录时”或“启动时”创建触发器。在操作选项卡中,创建指向脚本的新操作。

相关内容