【发布时间】:2016-10-25 07:32:45
【问题描述】:
我有以下 PowerShell 脚本 (myscript.ps1),我在其中询问用户名和密码。根据用户名和密码,它将文件复制到某个目的地。
$credentials = Get-Credential
if ($credentials.Username -eq "user1" -And $credentials.GetNetworkCredential().password -eq "pass1")
{ Copy-Item "test1.pdf" "\test\test1.pdf"; }
else
{ Copy-Item "test2.pdf" "\test\test2.pdf"; }
要求:我想让这个文件受到保护,这样任何人都无法编辑它并查看用户名和密码。
PS2EXE
我找到了一个解决方案 here,它将 PowerShell 脚本转换为 .exe 文件。当我最初使用 PowerShell 运行脚本时,会出现一个对话框,允许我输入用户名和密码:
生成 .exe 后,当我运行它时,凭据对话框不再出现。相反,控制台显示“凭据:”
我不知道为什么?我希望凭据表单在运行 exe 时仍然出现。请问有什么想法吗?
【问题讨论】:
-
您无法保护脚本。但是您可以将 uname 和密码保存在加密文件中,并在运行时读取它们。
-
@RyanBemrose 你能给我发一份参考资料吗?
-
这听起来不安全,脚本需要硬编码的加密密钥,这与拥有密码一样糟糕。为什么不对脚本文件应用 ACL?
-
This article 展示了如何在 Windows 凭据管理器或安全字符串中存储加密密码。您可以在网上搜索“powershell 安全密码”以获取有关将密码存储在加密文件中的其他教程。
-
@Burt_Harris 是否有可以应用的 ACL 允许执行文件但不读取文件?
标签: powershell