如何强制 PowerShell 不允许交互式命令窗口

Sal*_*rMN 7 powershell

我是一名Citrix管理员,希望限制我们服务器上的一般用户使用 PowerShell 运行他们自己的脚本,或以交互方式使用它。我们已经禁止通过GPO使用命令提示符,但是在 PowerShell 可用的情况下,这基本上没用。

我发现 Powershell.exe 有一个命令行选项,-NoInteractive允许用户运行脚本,但它没有为他们提供交互式命令提示符。问题是我还没有找到强制powershell以这种方式运行的方法。我什至创建了一个 C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1 启动脚本来检查-NoInteractive参数,但用户可以通过简单地启动带有-NoProfile参数的Powershell.exe 来绕过它.

另一个问题是我们确实使用了很多 PowerShell 脚本来为用户启动应用程序,并且登录脚本的一部分是用 PowerShell 编写的,需要在用户上下文中运行,所以我不能简单地对 EXE 文件进行 ACL。我需要他们能够使用 PowerShell,只是不能以交互方式使用。最终,我们希望强制AllSigned执行执行策略并签署所有脚本,以便用户可以运行的唯一内容是我们(管理员)创建和/或签署的脚本。

我试过在谷歌上搜索这个答案,发现很多人都在使用-NoInteractive,但我还没有找到有人试图强迫它的实例。有任何想法吗?

jbs*_*ith 11

我认为您误解了 -NonInteractive 开关的使用;您仍然可以运行powershell -noninteractive并获得交互式提示。非交互式开关适用于自动化脚本编写方案,在这种情况下,您不希望 powershell 向用户发送提示并等待响应。例如,在非交互式 PowerShell 窗口中,如果您在Get-Credential没有任何参数的情况下运行,它将立即失败,而不是提示输入用户名和密码。非交互式不会充当安全机制。

更好的方法是保护您要保护的内容,而不是用户可能用来访问它的工具。

  • 好吧,我不知道有什么方法,特别是如果您想使用 powershell 登录脚本。不要让你的用户成为本地管理员,在文件/文件夹上设置适当的 ACL,我看不出问题出在哪里。然后,如果您有一个精通 IT 的用户,他们也许可以使用 PowerShell 来加速他们的工作。如果用户具有删除文件的权限,则无论是否可以访问 PowerShell,他们都可以执行此操作。如果您必须阻止它,那么我认为您必须对该文件进行 ACL,然后找到另一种方式来启动您的 ps1 脚本(在 C# 应用程序中托管 PS 运行时?)。 (2认同)