Powershell执行策略远程签名矛盾



请查看以下URL:URL

现在它说了以下关于下载的脚本:

运行从Internet下载但未签名的脚本(如果脚本被取消阻止(,例如使用Unblock File cmdlet。

我刚刚从technet库(PS2EXE(下载了一个脚本,我可以在不使用Unblock_file cmdlet的情况下运行包含的测试脚本。发生了什么事?我是误解了微软告诉我的,还是这是一个小故障?

help unblock-file:

Unblock File cmdlet在内部删除Zone.Identifier备用数据流,该数据流的值为"3",表示它是从Internet下载的。

文件"远程"或"来自互联网"的概念是本地计算机文件系统上的数据,这些数据必须由下载文件的工具放在那里,在下载过程中不包括在文件中。

如果你通过Internet Explorer下载了一个文件,可能是FireFox、Invoke-WebRequest,它们会添加它。如果你用其他东西下载,该工具可能不会添加这个备用流。

查看其行为:

# Show folder is empty
PS C:temp> Get-ChildItem

# Make a test script which prints Hello World, and run it
PS C:temp> "'Hello World'" | Set-Content -Path .test.ps1
PS C:temp> .test.ps1
Hello World

# Show the file exists
PS C:temp> Get-ChildItem
Directory: C:temp
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       01/08/2018     22:07             15 test.ps1

# Add the Zone Identifier alternate data stream
PS C:temp> "[ZoneTransfer]`nZoneId=3" | Set-Content -Path 'test.ps1' -Stream 'Zone.Identifier'

# Show that it doesn't appear in a normal directory listing:
PS C:temp> Get-ChildItem
Directory: C:temp
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       01/08/2018     22:08             15 test.ps1

# Show how it blocks the file from running
PS C:temp> .test.ps1
.test.ps1 : File C:temptest.ps1 cannot be loaded. The file C:temptest.ps1 is not digitally signed. You cannot
run this script on the current system. For more information about running scripts and setting execution policy, see
about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .test.ps1
+ ~~~~~~~~~~
+ CategoryInfo          : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

# Show file content
PS C:temp> Get-Content -Path .test.ps1
'Hello World'

# Show alternate data stream content
PS C:temp> Get-Content -Path .test.ps1 -Stream 'Zone.Identifier'
[ZoneTransfer]
ZoneId=3

# Unblock-File removes this alternate stream
PS C:temp> Unblock-File .test.ps1

# Script runs again
PS C:temp> .test.ps1
Hello World

所以主要的问题是,如果你运行Get-Content file.ps1:Zone.Identifier,看到ZoneId是3仍然可以运行脚本,Get-ExecutionPolicy是RemoteSigned,那么你会发生一些奇怪的事情。

但我的猜测是下载工具没有添加这些数据,所以该文件看起来就像本地创建的文件。

注:。RemoteSigned不是一个安全功能,它是一个"帮助防止在读取脚本并故意选择运行脚本之前意外运行脚本"复选框,就像一个"你确定吗?"框,而不是密码提示。

相关内容

  • 没有找到相关文章

最新更新