Merge branch 'master' of https://github.com/PowerShell/PowerShell into jianyun/docs
This commit is contained in:
commit
f3b239510a
73
.github/CONTRIBUTING.md
vendored
73
.github/CONTRIBUTING.md
vendored
|
@ -9,54 +9,59 @@ New to Git?
|
|||
- Make sure you have a [GitHub account](https://github.com/signup/free)
|
||||
- [Git Basics](../docs/git/basics.md): install and getting started.
|
||||
- [Commit process](../docs/git/committing.md): step-by-step instructions how to commit your changes
|
||||
- [Git for sd users](../docs/git/source-depot.md): a handy reference document for people familiar with `sd`
|
||||
|
||||
|
||||
Quick Start Check-list
|
||||
----
|
||||
- Read [the Community Governance](../docs/community/governance.md)
|
||||
- Make sure you have signed [PowerShell Contribution License Agreement (CLA)](#contributor-license-agreement) before pull request
|
||||
- Make sure you have signed a [PowerShell Contribution License Agreement (CLA)](#contributor-license-agreement) before submitting a pull request
|
||||
- Get familiar with the [PowerShell repository](../docs/git/powershell-repository-101.md)
|
||||
- Setup your [development environment](../docs/dev-process/setup-dev-environment.md)
|
||||
- Build the [PowerShell repository](https://github.com/PowerShell/PowerShell)
|
||||
- [Try it out with the binaries you just built](../docs/dev-process/tryit.md)
|
||||
|
||||
|
||||
Contributing to Issue
|
||||
Contributing to Issues
|
||||
----
|
||||
|
||||
- Review the [GitHub Issue Management process](../docs/dev-process/issue-management-process.md). It covers the triage process and the definition of Label, Assignee and the guidance like verifying and closing issues
|
||||
- Check if the issue you are going to file already exists in [GitHub Issue query](https://github.com/PowerShell/PowerShell/issues)
|
||||
- Submit an issue, assuming it does not exist yet, via [GitHub Issue track](https://github.com/PowerShell/PowerShell/issues) by following the issue template.
|
||||
- Review the [GitHub issue management process](../docs/dev-process/issue-management-process.md). It covers the triage process and the definition of labels and assignees as well as a description of how we will verify and close issues
|
||||
- Check if the issue you are going to file already exists in our [GitHub issues](https://github.com/PowerShell/PowerShell/issues)
|
||||
- If you can't find your issue already, [open a new issue](https://github.com/PowerShell/PowerShell/issues/new), making sure to follow the directions in the issue template as best you can.
|
||||
|
||||
Contributing to Documentation
|
||||
----
|
||||
- Choose what to work on. Check the list of [documentation issues](https://github.com/PowerShell/PowerShell-Docs/issues) to see if someone is already working on it.
|
||||
- If you cannot find an existing issue for your desired work, open a new issue for your work.
|
||||
- First, check the list of [documentation issues](https://github.com/PowerShell/PowerShell-Docs/issues) to make sure your issue doesn't already exist or that someone is already working on it.
|
||||
- If you cannot find an existing issue for your desired work, [open a new issue](https://github.com/PowerShell/PowerShell/issues/new) explaining that you'd like to contribute to fix the problem.
|
||||
- Follow the guidelines at [Contributing to PowerShell Documentation](https://github.com/PowerShell/PowerShell-Docs/blob/staging/CONTRIBUTING.md).
|
||||
- If you contribute to the PowerShell project in a way that changes the user or developer experience, you are expected to document those changes.
|
||||
|
||||
|
||||
Contributing to Code
|
||||
----
|
||||
|
||||
- Learn how to setup your development environment and build PowerShell for [Linux][build-linux], [Windows Core][build-wc], [Windows Full][build-wf] or
|
||||
[OS X][build-osx].
|
||||
- Build the [PowerShell repository](https://github.com/PowerShell/PowerShell)
|
||||
- Ensure you can [locally execute tests][testing-guidelines] with your build.
|
||||
- [Pick something to work on](https://github.com/PowerShell/PowerShell/issues)
|
||||
- If you cannot find an existing issue for your desired work, open a new issue for your work
|
||||
- Get agreement from the PowerShell team and the community regarding your proposed change via the [Issue Triage Process](../docs/dev-process/issue-management-process.md).
|
||||
- If you will be adding a new cmdlet or other design changes, follow [Making Design Changes guidelines](#making-design-changes)
|
||||
- For breaking changes, see [Make Breaking Changes guidelines](#making-breaking-changes)
|
||||
- If you would like to be assigned to the issue, please ask @powershell/powershell (TODO) for an assignment
|
||||
- Get agreement from the PowerShell team and the community regarding your proposed change via the [issue triage process][issue-triage].
|
||||
- If you're changes require a new cmdlet or other design changes, follow the [design change guidelines](#making-design-changes)
|
||||
- Ensure that you've reviewd our [breaking changes guidelines](#making-breaking-changes)
|
||||
- If you would like to be assigned to the issue, please ask `@powershell/powershell` for an assignment
|
||||
- Create a [personal fork of the repository](https://help.github.com/articles/fork-a-repo/) to start your work
|
||||
- Follow the [coding guidelines](../docs/coding-guidelines/coding-guidelines.md) and [testing guidelines](../docs/testing-guidelines/testing-guidelines.md)
|
||||
- Read the [Pull Request (PR) Guidelines](../docs/dev-process/pull-request-rules.md) and create a [PR](https://guides.github.com/activities/hello-world/) against the upstream repository
|
||||
- Perform a [code review](../docs/dev-process/code-review-guidelines.md) with the PowerShell Committee (TODO) on the pull request.
|
||||
- Perform a [code review](../docs/dev-process/code-review-guidelines.md) with the [PowerShell Committee][governance] on the pull request.
|
||||
|
||||
[build-wc]: ../docs/building/windows-core.md
|
||||
[build-wf]: ../docs/building/windows-full.md
|
||||
[build-osx]: ../docs/building/osx.md
|
||||
[build-linux]: ../docs/building/linux.md
|
||||
[testing-guidelines]: ../docs/testing-guidelines/testing-guidelines.md
|
||||
[issue-triage]: ../docs/dev-process/issue-management-process.md
|
||||
[governance]: ../docs/community/governance.md
|
||||
|
||||
Making Breaking Changes
|
||||
----
|
||||
|
||||
When you make code changes, please pay attention to these that can affect the [Public Contract](../docs/dev-process/breaking-change-contract.md),
|
||||
for example, PowerShell parameter, API or protocols changes. Before starting making changes to the code, first review the [Breaking Changes guidelines](../docs/dev-process/breaking-change-contract.md)
|
||||
for example, PowerShell parameter, API or protocols changes. Before making changes to the code, first review the [breaking changes contract](../docs/dev-process/breaking-change-contract.md)
|
||||
and follow the guidelines to keep PowerShell backward compatible.
|
||||
|
||||
Making Design Changes
|
||||
|
@ -65,10 +70,11 @@ To add new features such as cmdlets or making design changes, please follow the
|
|||
|
||||
Common Engineering Practices
|
||||
----
|
||||
Other than the guidelines ([coding](../docs/coding-guidelines/coding-guidelines.md), [RFC process](https://github.com/PowerShell/PowerShell-RFC) for design, [documentation](#contributing-to-documentation)
|
||||
and [testing](../docs/testing-guidelines/testing-guidelines.md)) discussed above, following are common engineering practices we would like everyone to follow:
|
||||
- Do not commit code changes to the master branch! Read GitHub's guides on [Forking Project](https://guides.github.com/activities/forking/) and [Understanding the GitHub Flow](https://guides.github.com/introduction/flow/)
|
||||
- Format commit messages as follows based on [the Tim Pope's guidelines]("http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html"):
|
||||
Other than the guidelines for ([coding](../docs/coding-guidelines/coding-guidelines.md), the [RFC process](https://github.com/PowerShell/PowerShell-RFC) for design, [documentation](#contributing-to-documentation)
|
||||
and [testing](../docs/testing-guidelines/testing-guidelines.md)) discussed above, we encourage contributors to follow these common engineering practices:
|
||||
- Do not commit code changes to the `master` branch!
|
||||
Read GitHub's guides on [forking project](https://guides.github.com/activities/forking/) and [Understanding the GitHub Flow](https://guides.github.com/introduction/flow/)
|
||||
- Format commit messages based on [Tim Pope's guidelines]("http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html"):
|
||||
|
||||
```
|
||||
Summarize change in 50 characters or less
|
||||
|
@ -87,12 +93,12 @@ Fix #42
|
|||
- Create and/or update tests when making code changes
|
||||
- Run tests and ensure they are passing before pull request
|
||||
- All pull requests **must** pass CI systems before they can be approved
|
||||
- Avoid making a big pull requests. Instead, file an issue and start a discussion with the community before you invest a large amount of time
|
||||
- Avoid making big pull requests. Instead, file an issue and start a discussion with the community before you invest a large amount of time
|
||||
- Blog and tweet about your contributions frequently!
|
||||
|
||||
File Headers
|
||||
----
|
||||
The following file header is the used for PowerShell. Please use it for new files. For more information, see [coding guidelines](../docs/coding-guidelines/coding-guidelines.md).
|
||||
The following file header is used for all PowerShell code. Please use it for new files. For more information, see [coding guidelines](../docs/coding-guidelines/coding-guidelines.md).
|
||||
```C#
|
||||
// … TODO TODO
|
||||
// Licensed to the PowerShell …. under one or more agreements.
|
||||
|
@ -101,16 +107,13 @@ The following file header is the used for PowerShell. Please use it for new file
|
|||
|
||||
Licensing & Copyright
|
||||
----
|
||||
You can find [here](../docs/community/legal-licensing.md) for the PowerShell sources license and copyright information.
|
||||
You can find more information about the PowerShell source license and copyright [here](../docs/community/legal-licensing.md).
|
||||
|
||||
Contributor License Agreement
|
||||
Contributor License Agreement (CLA)
|
||||
----
|
||||
You must sign a PowerShell Contribution License Agreement (CLA) before your Pull Request will be merged.
|
||||
You must sign a PowerShell Contribution License Agreement (CLA) before your pull request will be merged.
|
||||
This a one-time requirement for the PowerShell project. Signing the CLA process is simple and can be done in less than a minute.
|
||||
You can read more about [Contribution License Agreements (CLA)](http://en.wikipedia.org/wiki/Contributor_License_Agreement) on wikipedia.
|
||||
|
||||
You don't have to do this up-front. You can simply clone, fork, and submit your pull-request as
|
||||
usual. When your pull-request is created, it is classified by a CLA bot. If the change is trivial
|
||||
(e.g. you just fixed a typo), then the PR is labelled with cla-not-required. Otherwise it's
|
||||
classified as cla-required. Once you signed a CLA, the current and all future pull-requests will be
|
||||
labelled as cla-signed.
|
||||
You don't have to do this up-front. You can simply clone, fork, and submit your pull request as usual.
|
||||
When your pull request is created, it is classified by a CLA bot.
|
||||
If the change is trivial, it's classified as `cla-required`.
|
||||
Once you sign a CLA, all your existing and future pull requests will be labeled as cla-signed.
|
||||
|
|
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -1,6 +1,6 @@
|
|||
<!-- PR checklist -->
|
||||
|
||||
- [ ] Resolves #xyz.
|
||||
- [ ] Resolves issue #xyz.
|
||||
- [ ] Code is up-to-date with `master`.
|
||||
- [ ] Add tests that fail without your changes.
|
||||
- [ ] Update all relevant [documentation](../docs).
|
||||
|
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -26,7 +26,6 @@ dotnet-uninstall-debian-packages.sh
|
|||
|
||||
# Ignore packages
|
||||
*.deb
|
||||
*.msi
|
||||
*.zip
|
||||
*.rpm
|
||||
*.pkg
|
||||
|
@ -39,3 +38,6 @@ powershell.version
|
|||
|
||||
# resgen output
|
||||
gen
|
||||
|
||||
# Per repo profile
|
||||
.profile.ps1
|
||||
|
|
12
README.md
12
README.md
|
@ -49,26 +49,26 @@ Developing and Contributing
|
|||
If you are new to Git, we recommend you start by reviewing our
|
||||
[Git basics document][git-basics] where you will find Git installation
|
||||
instructions, cheat sheets and links to our favorite Git tutorials. We also
|
||||
recommend, reviewing an example of a [basic Git commit walkthrough][git-commit].
|
||||
recommend, reviewing an example of a [basic Git commit walkthrough][git-commit].
|
||||
|
||||
To begin development, you'll need to setup your development environment for
|
||||
either [Linux][build-linux], [Windows Core][build-wc], [Windows Full][build-wf] or
|
||||
To begin development, you'll need to setup your development environment for [Linux][build-linux], [Windows Core][build-wc], [Windows Full][build-wf] or
|
||||
[OS X][build-osx] and are encouraged to review the
|
||||
[contribution guidelines][contribution] for specific workflow, test
|
||||
requirements and coding guidelines.
|
||||
|
||||
If you encounter issues, please consult the [known issues][known-issues]
|
||||
If you encounter issues in your development, please consult the [known issues][known-issues]
|
||||
and [FAQ][faq] documents to see if the issue you are running into is
|
||||
captured and if a workaround exists.
|
||||
|
||||
If do not see your issue captured, please file a [new issue][new-issue] using
|
||||
If you encounter issues with PowerShell itself, first search for it in our [issues][github-issues]. If you do not see your issue captured, please file a [new issue][new-issue] using
|
||||
the appropriate issue tag.
|
||||
|
||||
[git-basics]: docs/git/basics.md
|
||||
[git-commit]: docs/git/committing.md
|
||||
[git-commit]: docs/git/powershell-repository-101.md
|
||||
[contribution]: .github/CONTRIBUTING.md
|
||||
[known-issues]: docs/KNOWNISSUES.md
|
||||
[faq]: docs/FAQ.md
|
||||
[github-issues]:https://github.com/PowerShell/PowerShell/issues
|
||||
[new-issue]:https://github.com/PowerShell/PowerShell/issues/new
|
||||
|
||||
|
||||
|
|
|
@ -91,6 +91,25 @@ following cmdlets that exist in the FullCLR version:
|
|||
- Show-Command
|
||||
- Update-List
|
||||
|
||||
### ExecutionPolicy unavailable on non-Windows platform
|
||||
|
||||
ExecutionPolicy is not implemented on non-Windows platforms and the following related CmdLets will return the error below.
|
||||
|
||||
- Get-ExecutionPolicy
|
||||
- Set-ExecutionPolicy
|
||||
|
||||
```
|
||||
Set-ExecutionPolicy : Operation is not supported on this platform.
|
||||
At line:1 char:1
|
||||
+ Set-ExecutionPolicy AllSigned
|
||||
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
+ CategoryInfo : NotSpecified: (:) [Set-ExecutionPolicy], Platfor
|
||||
mNotSupportedException
|
||||
+ FullyQualifiedErrorId : System.PlatformNotSupportedException,Microsoft.P
|
||||
owerShell.Commands.SetExecutionPolicyCommand
|
||||
|
||||
```
|
||||
|
||||
## File paths with literal backward slashes
|
||||
|
||||
On some filesystems (Linux, OS X), file paths are allowed to contain literal
|
||||
|
|
|
@ -2,3 +2,11 @@ author: Joey
|
|||
> PowerShell community, twitter, facebook, linkedIn...)
|
||||
> Community ground rules, appeals process (if they disagree with our decision)
|
||||
> SME
|
||||
|
||||
TODO
|
||||
1. Define a difference between small, medium, large design decisions/bugs
|
||||
a. Point to quick fix doc
|
||||
2. Explain the RFC process
|
||||
3. Define maintainer vs. feature owner
|
||||
4. Define committee
|
||||
5.
|
|
@ -1 +1,6 @@
|
|||
author: Joey
|
||||
|
||||
TODO: It's MIT
|
||||
Make sure to CLA
|
||||
|
||||
Do we even need this doc?
|
|
@ -1,6 +1,34 @@
|
|||
author: Andy
|
||||
author: Jason/Andy
|
||||
|
||||
|
||||
> meaning of label, assignees, etc.
|
||||
> triage process
|
||||
> requirements for resolving (timing), closing...
|
||||
|
||||
## Long-living issue labels
|
||||
|
||||
### Feature areas
|
||||
|
||||
These labels describe what feature area of PowerShell that an issue addresses.
|
||||
|
||||
* `Area-Build`:
|
||||
* `Area-Cmdlets`:
|
||||
* `Area-Console`:
|
||||
* `Area-Debugging`:
|
||||
* `Area-Documentation`:
|
||||
* `Area-Engine`:
|
||||
* `Area-Intellisense`:
|
||||
* `Area-Language`:
|
||||
* `Area-OMI`:
|
||||
* `Area-PackageManagement`:
|
||||
* `Area-Performance`:
|
||||
* `Area-Portability`:
|
||||
* `Area-PSReadline`:
|
||||
* `Area-Test`:
|
||||
|
||||
### Operating systems
|
||||
|
||||
These are for issues that are specific to certain operating systems:
|
||||
* `OS-Linux`
|
||||
* `OS-OS X`
|
||||
* `OS-Windows`
|
||||
|
|
|
@ -6,3 +6,15 @@ author: Hemant
|
|||
> "some tests we can only run internally"
|
||||
> exact timeline not need for Aug17
|
||||
> Windows quality gates
|
||||
|
||||
## Minimum gates (TODO)
|
||||
|
||||
Our [pull request template][pr-template] includes the bare minimum requirements for a pull request to be accepted into PowerShell. This includes:
|
||||
* Writing tests
|
||||
* Writing documentation (where does thie one live already? is it where this guidance should exist all up?)
|
||||
* Our [code review process][code-review]
|
||||
* Repository maintainer sign-off, per our [governance model][governance]
|
||||
|
||||
[pr-template]: ../.github/PULL_REQUEST_TEMPLATE.md
|
||||
[code-review]: code-review-guidelines.md
|
||||
[governance]: ../community/governance.md
|
||||
|
|
|
@ -7,10 +7,9 @@ Working with PowerShell repository
|
|||
git clone --recursive https://github.com/PowerShell/PowerShell
|
||||
```
|
||||
|
||||
PowerShell repository has **submodules**.
|
||||
They are required to build and test powershell.
|
||||
That's why you need `--recursive`, when you `clone`.
|
||||
|
||||
The PowerShell repository has **submodules**.
|
||||
They are required to build and test PowerShell.
|
||||
That's why you need `--recursive`, when you `git clone`.
|
||||
|
||||
If you already cloned the repo without `--recursive`, update submodules manually
|
||||
|
||||
|
@ -22,32 +21,28 @@ git submodule update
|
|||
See [FAQ](../FAQ.md#why-is-my-submodule-empty) for details.
|
||||
|
||||
|
||||
|
||||
Branches
|
||||
---------
|
||||
|
||||
* Don't commit your changes directly to master.
|
||||
It would make workflow messy.
|
||||
* Checkout a new local branch from master for every change you want to make (bugfix, feature).
|
||||
* Use `alias/feature-name` pattern.
|
||||
It will make the collaborative workflow messy.
|
||||
* Checkout a new local branch from `master` for every change you want to make (bugfix, feature).
|
||||
* Use the `username/feature-name` pattern for naming branches.
|
||||
* Use lowercase-with-dashes for naming.
|
||||
* Follow [Linus' recommendations][Linus] about history.
|
||||
- People can (and probably should) rebase their _private_ trees (their own
|
||||
work). That's a _cleanup_. But never other peoples code. That's a "destroy
|
||||
history"
|
||||
- You must never EVER destroy other peoples history. You must not rebase
|
||||
commits other people did. Basically, if it doesn't have your sign-off
|
||||
on it, it's off limits: you can't rebase it, because it's not yours.
|
||||
- "People can (and probably should) rebase their _private_ trees (their own work). That's a _cleanup_. But never other peoples code. That's a 'destroy history'...
|
||||
You must never EVER destroy other peoples history. You must not rebase commits other people did.
|
||||
Basically, if it doesn't have your sign-off on it, it's off limits: you can't rebase it, because it's not yours."
|
||||
|
||||
#### Understand branches
|
||||
|
||||
* **master** is the branch with the latest and gratest changes.
|
||||
* **master** is the branch with the latest and greatest changes.
|
||||
It could be unstable.
|
||||
* Send your Pull Requests to **master**.
|
||||
* Send your pull requests to **master**.
|
||||
|
||||
#### Sync your local repo
|
||||
|
||||
Use **git rebase** instead of **git merge** and **git pull**, when you updating your feature-branch.
|
||||
Use **git rebase** instead of **git merge** and **git pull**, when you're updating your feature-branch.
|
||||
|
||||
```sh
|
||||
# switch to master branch
|
||||
|
@ -63,7 +58,7 @@ git pull origin master
|
|||
|
||||
```
|
||||
|
||||
Then switch to your branch and do rebase
|
||||
Then switch to your branch and do a rebase
|
||||
|
||||
```
|
||||
git rebase master
|
||||
|
@ -81,7 +76,6 @@ We are leaving few links here:
|
|||
[Linus]:http://thread.gmane.org/gmane.comp.video.dri.devel/34739/focus=34744
|
||||
|
||||
|
||||
|
||||
Tags
|
||||
------
|
||||
|
||||
|
@ -92,7 +86,7 @@ you will find it via **tags**.
|
|||
* Find the tag that corresponds to the release.
|
||||
* Use `git checkout <tag-name>` to get this version.
|
||||
|
||||
**Note:** [checking out tag][] will move the repo in [DETACHED HEAD][] state.
|
||||
**Note:** [checking out a tag][] will move the repo to a [DETACHED HEAD][] state.
|
||||
|
||||
[checking out tag]:https://git-scm.com/book/en/v2/Git-Basics-Tagging#Checking-out-Tags
|
||||
[DETACHED HEAD]:https://www.git-tower.com/learn/git/faq/detached-head-when-checkout-commit
|
||||
|
@ -105,7 +99,6 @@ git checkout -b vors/hotfix
|
|||
```
|
||||
|
||||
|
||||
|
||||
Recommended Git configurations
|
||||
==============================
|
||||
|
||||
|
|
|
@ -87,13 +87,14 @@ namespace System.Management.Automation
|
|||
CommandOrigin origin,
|
||||
PSHost host)
|
||||
{
|
||||
#if LINUX
|
||||
// TODO:PSL this is a workaround since the exception below
|
||||
// hides the internal issue of what's going on in terms of
|
||||
// execution policy.
|
||||
if (Platform.IsCore)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// execution policy.
|
||||
// On non-Windows platform Set/Get-ExecutionPolicy throw
|
||||
// PlatformNotSupportedException
|
||||
return;
|
||||
#else
|
||||
|
||||
|
||||
#if DEBUG
|
||||
|
@ -159,6 +160,7 @@ namespace System.Management.Automation
|
|||
throw new PSSecurityException(AuthorizationManagerBase.AuthorizationManagerDefaultFailureReason);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -431,13 +431,11 @@ namespace System.Management.Automation
|
|||
return false;
|
||||
}
|
||||
|
||||
#if LINUX
|
||||
// There is no signature support on non-Windows platforms (yet), when
|
||||
// execution reaches here, we are sure the file is under product folder
|
||||
if (Platform.IsCore)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
#else
|
||||
// Check the file signature
|
||||
Signature fileSignature = SignatureHelper.GetSignature(file, null);
|
||||
if ((fileSignature != null) && (fileSignature.IsOSBinary))
|
||||
|
@ -457,6 +455,7 @@ namespace System.Management.Automation
|
|||
}
|
||||
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if !CORECLR
|
||||
|
|
872
test/powershell/engine/ExecutionPolicy.Tests.ps1
Normal file
872
test/powershell/engine/ExecutionPolicy.Tests.ps1
Normal file
|
@ -0,0 +1,872 @@
|
|||
# Ported from MultiMachine Tests
|
||||
# Tests\Engine\HelpSystem\Pester.Engine.HelpSystem.BugFix.Tests.ps1
|
||||
# Tests\Commands\Cmdlets\Microsoft.PowerShell.Security\Pester.Command.Cmdlets.Security.Tests.ps1
|
||||
|
||||
# Execution policy currently does not work outside of windows
|
||||
if(-not $IsWindows)
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
Describe "Help work with ExecutionPolicy Restricted " {
|
||||
|
||||
# Validate that 'Get-Help Get-Disk' returns one result when the execution policy is 'Restricted' on Nano
|
||||
# From an internal bug - [Regression] Get-Help returns multiple matches when there is an exact match
|
||||
|
||||
# Skip the test if Storage module is not available, return a pesudo result
|
||||
# ExecutionPoliy only works on windows
|
||||
It "Test for Get-Help Get-Disk" -skip:(!(Test-Path (Join-Path -Path $PSHOME -ChildPath Modules\Storage\Storage.psd1)) -or -not $IsWindows) {
|
||||
|
||||
try
|
||||
{
|
||||
$currentExecutionPolicy = Get-ExecutionPolicy
|
||||
Get-Module -Name Storage | Remove-Module -Force -ErrorAction Stop
|
||||
|
||||
# 'Get-Help Get-Disk' should return one result back
|
||||
Set-ExecutionPolicy -ExecutionPolicy Restricted -Force -ErrorAction Stop
|
||||
(Get-Help -Name Get-Disk -ErrorAction Stop).Name | Should Be 'Get-Disk'
|
||||
}
|
||||
catch {
|
||||
$_.ToString | should be null
|
||||
}
|
||||
finally
|
||||
{
|
||||
Set-ExecutionPolicy $currentExecutionPolicy -Force
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Validate ExecutionPolicy cmdlets in PowerShell" -Tags "Innerloop", "BVT" {
|
||||
|
||||
BeforeAll {
|
||||
|
||||
|
||||
#Generate test data
|
||||
$drive = 'TestDrive:\'
|
||||
$testDirectory = Join-Path $drive ("MultiMachineTestData\Commands\Cmdlets\Security_TestData\ExecutionPolicyTestData")
|
||||
if(Test-Path $testDirectory)
|
||||
{
|
||||
Remove-Item -Force -Recurse $testDirectory -ea SilentlyContinue
|
||||
}
|
||||
$null = New-Item $testDirectory -ItemType Directory -Force
|
||||
$remoteTestDirectory = $testDirectory
|
||||
|
||||
$InternetSignatureCorruptedScript = Join-Path -Path $remoteTestDirectory -ChildPath InternetSignatureCorruptedScript.ps1
|
||||
$InternetSignedScript = Join-Path -Path $remoteTestDirectory -ChildPath InternetSignedScript.ps1
|
||||
$InternetUnsignedScript = Join-Path -Path $remoteTestDirectory -ChildPath InternetUnsignedScript.ps1
|
||||
$IntranetSignatureCorruptedScript = Join-Path -Path $remoteTestDirectory -ChildPath IntranetSignatureCorruptedScript.ps1
|
||||
$IntranetSignedScript = Join-Path -Path $remoteTestDirectory -ChildPath IntranetSignedScript.ps1
|
||||
$IntranetUnsignedScript = Join-Path -Path $remoteTestDirectory -ChildPath IntranetUnsignedScript.ps1
|
||||
$LocalSignatureCorruptedScript = Join-Path -Path $remoteTestDirectory -ChildPath LocalSignatureCorruptedScript.ps1
|
||||
$LocalSignedScript = Join-Path -Path $remoteTestDirectory -ChildPath LocalSignedScript.ps1
|
||||
$LocalUnsignedScript = Join-Path -Path $remoteTestDirectory -ChildPath LocalUnsignedScript.ps1
|
||||
$TrustedSignatureCorruptedScript = Join-Path -Path $remoteTestDirectory -ChildPath TrustedSignatureCorruptedScript.ps1
|
||||
$TrustedSignedScript = Join-Path -Path $remoteTestDirectory -ChildPath TrustedSignedScript.ps1
|
||||
$TrustedUnsignedScript = Join-Path -Path $remoteTestDirectory -ChildPath TrustedUnsignedScript.ps1
|
||||
$UntrustedSignatureCorruptedScript = Join-Path -Path $remoteTestDirectory -ChildPath UntrustedSignatureCorruptedScript.ps1
|
||||
$UntrustedSignedScript = Join-Path -Path $remoteTestDirectory -ChildPath UntrustedSignedScript.ps1
|
||||
$UntrustedUnsignedScript = Join-Path -Path $remoteTestDirectory -ChildPath UntrustedUnsignedScript.ps1
|
||||
$MyComputerSignatureCorruptedScript = Join-Path -Path $remoteTestDirectory -ChildPath MyComputerSignatureCorruptedScript.ps1
|
||||
$MyComputerSignedScript = Join-Path -Path $remoteTestDirectory -ChildPath MyComputerSignedScript.ps1
|
||||
$MyComputerUnsignedScript = Join-Path -Path $remoteTestDirectory -ChildPath MyComputerUnsignedScript.ps1
|
||||
|
||||
$fileType = @{
|
||||
"Local" = -1
|
||||
"MyComputer" = 0
|
||||
"Intranet" = 1
|
||||
"Trusted" = 2
|
||||
"Internet" = 3
|
||||
"Untrusted" = 4
|
||||
}
|
||||
|
||||
$testFilesInfo = @(
|
||||
@{
|
||||
FilePath = $InternetSignatureCorruptedScript
|
||||
FileType = $fileType.Internet
|
||||
AddSignature = $true
|
||||
Corrupted = $true
|
||||
}
|
||||
@{
|
||||
FilePath = $InternetSignedScript
|
||||
FileType = $fileType.Internet
|
||||
AddSignature = $true
|
||||
Corrupted = $false
|
||||
}
|
||||
@{
|
||||
FilePath = $InternetUnsignedScript
|
||||
FileType = $fileType.Internet
|
||||
AddSignature = $false
|
||||
Corrupted = $false
|
||||
}
|
||||
@{
|
||||
FilePath = $IntranetSignatureCorruptedScript
|
||||
FileType = $fileType.Intranet
|
||||
AddSignature = $true
|
||||
Corrupted = $true
|
||||
}
|
||||
@{
|
||||
FilePath = $IntranetSignedScript
|
||||
FileType = $fileType.Intranet
|
||||
AddSignature = $true
|
||||
Corrupted = $false
|
||||
}
|
||||
@{
|
||||
FilePath = $IntranetUnsignedScript
|
||||
FileType = $fileType.Intranet
|
||||
AddSignature = $true
|
||||
Corrupted = $true
|
||||
}
|
||||
@{
|
||||
FilePath = $LocalSignatureCorruptedScript
|
||||
FileType = $fileType.Local
|
||||
AddSignature = $true
|
||||
Corrupted = $true
|
||||
}
|
||||
@{
|
||||
FilePath = $LocalSignedScript
|
||||
FileType = $fileType.Local
|
||||
AddSignature = $true
|
||||
Corrupted = $false
|
||||
}
|
||||
@{
|
||||
FilePath = $LocalUnsignedScript
|
||||
FileType = $fileType.Local
|
||||
AddSignature = $false
|
||||
Corrupted = $false
|
||||
}
|
||||
@{
|
||||
FilePath = $TrustedSignatureCorruptedScript
|
||||
FileType = $fileType.Trusted
|
||||
AddSignature = $true
|
||||
Corrupted = $true
|
||||
}
|
||||
@{
|
||||
FilePath = $TrustedSignedScript
|
||||
FileType = $fileType.Trusted
|
||||
AddSignature = $true
|
||||
Corrupted = $false
|
||||
}
|
||||
@{
|
||||
FilePath = $TrustedUnsignedScript
|
||||
FileType = $fileType.Trusted
|
||||
AddSignature = $false
|
||||
Corrupted = $false
|
||||
}
|
||||
@{
|
||||
FilePath = $UntrustedSignatureCorruptedScript
|
||||
FileType = $fileType.Untrusted
|
||||
AddSignature = $true
|
||||
Corrupted = $true
|
||||
}
|
||||
@{
|
||||
FilePath = $UntrustedSignedScript
|
||||
FileType = $fileType.Untrusted
|
||||
AddSignature = $true
|
||||
Corrupted = $true
|
||||
}
|
||||
@{
|
||||
FilePath = $UntrustedUnsignedScript
|
||||
FileType = $fileType.Untrusted
|
||||
AddSignature = $true
|
||||
Corrupted = $false
|
||||
}
|
||||
@{
|
||||
FilePath = $MyComputerSignatureCorruptedScript
|
||||
FileType = $fileType.MyComputer
|
||||
AddSignature = $true
|
||||
Corrupted = $true
|
||||
}
|
||||
@{
|
||||
FilePath = $MyComputerSignedScript
|
||||
FileType = $fileType.MyComputer
|
||||
AddSignature = $true
|
||||
Corrupted = $false
|
||||
}
|
||||
@{
|
||||
FilePath = $MyComputerUnsignedScript
|
||||
FileType = $fileType.MyComputer
|
||||
AddSignature = $false
|
||||
Corrupted = $false
|
||||
}
|
||||
)
|
||||
|
||||
#Generate Test Data on remote machine and get the execution policy
|
||||
|
||||
function createTestFile
|
||||
{
|
||||
param (
|
||||
[string]
|
||||
$FilePath,
|
||||
|
||||
[int]
|
||||
$FileType,
|
||||
|
||||
[switch]
|
||||
$AddSignature,
|
||||
|
||||
[switch]
|
||||
$Corrupted
|
||||
)
|
||||
|
||||
$null = New-Item -Path $filePath -ItemType File
|
||||
|
||||
$content = "`"Hello`"" + "`r`n"
|
||||
if($AddSignature)
|
||||
{
|
||||
if($Corrupted)
|
||||
{
|
||||
# Add corrupted signature
|
||||
$content += @"
|
||||
# SIG # Begin signature block
|
||||
# MIIPTAYJKoZIhvcNAQcCoIIPPTCCDzkCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
|
||||
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
|
||||
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUYkdwUPVVR4frPbdbTE8ZPwfD
|
||||
# +XegggyDMIIGFTCCA/2gAwIBAgITMwAAABrJQBS8Ii1KJQAAAAAAGjANBgkqhkiG
|
||||
# 9w0BAQsFADCBkDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
|
||||
# BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjE6
|
||||
# MDgGA1UEAxMxTWljcm9zb2Z0IFRlc3RpbmcgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo
|
||||
# b3JpdHkgMjAxMDAeFw0xNDAyMDQxODAyMjVaFw0xODAyMDQxODAyMjVaMIGBMRMw
|
||||
# EQYKCZImiZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MRQw
|
||||
# EgYKCZImiZPyLGQBGRYEY29ycDEXMBUGCgmSJomT8ixkARkWB3JlZG1vbmQxIDAe
|
||||
# BgNVBAMTF01TSVQgVGVzdCBDb2RlU2lnbiBDQSAzMIIBIjANBgkqhkiG9w0BAQEF
|
||||
# AAOCAQ8AMIIBCgKCAQEAuV1NahtVcKSQ6osSVsCcXSsk5finBZfPTbq39nQiX9L0
|
||||
# PY+5Zi73qGhDv3m+exmvWoYTgI2AQZ48lQtohf4QV0THWjsvvP/r12WZSlOfUGi5
|
||||
# 5639OAmXiAPpFwPffubajzyIcYBDthJonBlhRsGCWoSaZRBZnp/39tDDvHvQqb+i
|
||||
# w94CDTFfjcQ/K6xtSCNH1IaKQd6TP2mVdtbYBHIfuLWWO/quLuVgKKxz9sHjONVx
|
||||
# 9nEcWwatIPiz5J9TsR/bbDxzF5AH9U8jm++ZNECu2zYPhqNj9t3HKYOrUNIEi/b9
|
||||
# xYlQfMw85hPkMBTJWieyufXHkhzouvTzI3E+VhJ8EwIDAQABo4IBczCCAW8wEgYJ
|
||||
# KwYBBAGCNxUBBAUCAwEAATAjBgkrBgEEAYI3FQIEFgQUxeHTk4FfDvbJdORSZob2
|
||||
# 57rUxG4wHQYDVR0OBBYEFLU0zfVssWSEb3tmjxXucfADs2jrMBkGCSsGAQQBgjcU
|
||||
# AgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEA
|
||||
# MB8GA1UdIwQYMBaAFKMBBH4wiDPruTGcyuuFdmf8ZbTRMFkGA1UdHwRSMFAwTqBM
|
||||
# oEqGSGh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01p
|
||||
# Y1Rlc1Jvb0NlckF1dF8yMDEwLTA2LTE3LmNybDBdBggrBgEFBQcBAQRRME8wTQYI
|
||||
# KwYBBQUHMAKGQWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWlj
|
||||
# VGVzUm9vQ2VyQXV0XzIwMTAtMDYtMTcuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQBt
|
||||
# 9EVv44wAgXhIItfRrX2LjyEyig6DkExisf3j/RNwa3BLNK5PlfNjU/0H58V1k/Dy
|
||||
# S3CIzLhvn+PBCrpjWr5R1blkJbKQUdP/ZNz28QOXd0l+Ha3P6Mne1NNfXDAjkRHK
|
||||
# SqzndTxJT7s/03jYcCfh3JyiXzT8Dt5GXlWIr1wJfQljhzon3w9sptb5sIJTjB9Z
|
||||
# 0VWITkvAc2hVjFkpPPWkODXIYXYIRBxKjakXr7fEx3//ECQYcQrKBvUrLirEsI0g
|
||||
# mxQ2QO30iQMxug5l4VYSuHhjaN6t86OjyUySGeImiLLKpVZt1uXIggpepSS9b6Pt
|
||||
# cxqD0+L532oYNJMlT/Y04PGtyfKIVFMGYTmlHoHUU78BNrpGj6C/s+qyzwXpKDHI
|
||||
# eQ2RozXUzt4SS8W1E3YVxWU2AWnP0BdS7PSB9BvVCkIf1bfuM6s88iSGFh0qaZyG
|
||||
# sGDlU8s7YkS2i32+nTr5NJAH/v7yd6E7DQYZULBKdKfQDXuY+6s8kjg2OduGchge
|
||||
# aZZh2NLh2V5OgVrXx7CzM0K6TMZNJRhgaHE7dzT3EC2uZ6ZT/SIwxwfKXYDjsPxx
|
||||
# R4C9qkdnSDVCPncGAHhyR75i3fGJ28FHhd7mtePU+zbPJ/JGyADOdPDWgJFulg97
|
||||
# 809qAfXmu6I7+ObsqlCMl8hbpctmWSqqpd8wZ36ntTCCBmYwggVOoAMCAQICE0MD
|
||||
# Bi6W0bK7qmSfpQAAAQMGLpYwDQYJKoZIhvcNAQELBQAwgYExEzARBgoJkiaJk/Is
|
||||
# ZAEZFgNjb20xGTAXBgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxFDASBgoJkiaJk/Is
|
||||
# ZAEZFgRjb3JwMRcwFQYKCZImiZPyLGQBGRYHcmVkbW9uZDEgMB4GA1UEAxMXTVNJ
|
||||
# VCBUZXN0IENvZGVTaWduIENBIDMwHhcNMTQxMjIyMTk0MzQ3WhcNMTYxMjIxMTk0
|
||||
# MzQ3WjCBhDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
|
||||
# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEuMCwG
|
||||
# A1UEAxMlTWljcm9zb2Z0IENvcnBvcmF0aW9uIDNyZCBwYXJ0eSBXUCBXUzCCASIw
|
||||
# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL4ofcc4uy3h6Ai2Bh8guql21/+u
|
||||
# LMLhEeHbz5STKqMoxXqy8i3uRcK/oo57INq3H+cQ4yqvuUrPwi3wQE9OG7wO4ymc
|
||||
# 4M/3WTNVfjdOx0FK2y6UuKZpWQlwycuELbONrvXTzdtGuM0aiGbELRJFOq+742I+
|
||||
# G3x3otZrTSXC1m6aOoKb50rSqUJ0ENb1PMJV9GBTXnRDde7ub7W3jp9Dj0HxFnof
|
||||
# QRZSWfCDrO1l1hle7zPBuTnLfCXbma0oRHlTz3m3yEGlUQscxYu6BI+aJkKDKa5R
|
||||
# L2PCPnau3WuUMFsmQZk6pFrACxIvq+OZTLsorTsZUooCL/5V1ofaHahnJ68CAwEA
|
||||
# AaOCAtAwggLMMD0GCSsGAQQBgjcVBwQwMC4GJisGAQQBgjcVCIPPiU2t8gKFoZ8M
|
||||
# gvrKfYHh+3SBT4PGhWmH7vANAgFkAgErMAsGA1UdDwQEAwIHgDA4BgkrBgEEAYI3
|
||||
# FQoEKzApMA0GCysGAQQBgjdMBYIsMAwGCisGAQQBgjdMAwEwCgYIKwYBBQUHAwMw
|
||||
# LAYDVR0lBCUwIwYLKwYBBAGCN0wFgiwGCisGAQQBgjdMAwEGCCsGAQUFBwMDMB0G
|
||||
# A1UdDgQWBBT+6HzYZdp8xPv1xylrDwOMuYQkvDAwBgNVHREEKTAnoCUGCisGAQQB
|
||||
# gjcUAgOgFwwVZG9uZ2Jvd0BtaWNyb3NvZnQuY29tMB8GA1UdIwQYMBaAFLU0zfVs
|
||||
# sWSEb3tmjxXucfADs2jrMIHxBgNVHR8EgekwgeYwgeOggeCggd2GOWh0dHA6Ly9j
|
||||
# b3JwcGtpL2NybC9NU0lUJTIwVGVzdCUyMENvZGVTaWduJTIwQ0ElMjAzKDEpLmNy
|
||||
# bIZQaHR0cDovL21zY3JsLm1pY3Jvc29mdC5jb20vcGtpL21zY29ycC9jcmwvTVNJ
|
||||
# VCUyMFRlc3QlMjBDb2RlU2lnbiUyMENBJTIwMygxKS5jcmyGTmh0dHA6Ly9jcmwu
|
||||
# bWljcm9zb2Z0LmNvbS9wa2kvbXNjb3JwL2NybC9NU0lUJTIwVGVzdCUyMENvZGVT
|
||||
# aWduJTIwQ0ElMjAzKDEpLmNybDCBrwYIKwYBBQUHAQEEgaIwgZ8wRQYIKwYBBQUH
|
||||
# MAKGOWh0dHA6Ly9jb3JwcGtpL2FpYS9NU0lUJTIwVGVzdCUyMENvZGVTaWduJTIw
|
||||
# Q0ElMjAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL3d3dy5taWNyb3NvZnQu
|
||||
# Y29tL3BraS9tc2NvcnAvTVNJVCUyMFRlc3QlMjBDb2RlU2lnbiUyMENBJTIwMygx
|
||||
# KS5jcnQwDQYJKoZIhvcNAQELBQADggEBAFRprvk5BxGyn5On1ICDyKRw9rLqyMET
|
||||
# IDuBmX/enKuLRmETJSF7Dvzo/XbSXm+FTbGwnp5TOIPtCAeT0NuUAAjdo2iRT2Xr
|
||||
# wc/B4x2dWMJmFG86WmPPWByfw1gFSep1xN6vA9qPb2VAXTmz8Ta75vSmCEfRAqOC
|
||||
# 7U4uv3RBWImDx+7tI71XLKBmn1s1TTs1rL+43MsNMA7YNeM8/G0k2KbcNeLONNMG
|
||||
# wJwtlu9CutONhULkhi2C3T7huDtNZgg+LnTbNvZeXMhHtfx8obh1fmgfOrdLUgE9
|
||||
# 1YtW0F6mZ7OsdWPGV1wPOdRuNxgzGWvOIYCUTeeTU7b+Cifz/mTf/9QxggIzMIIC
|
||||
# LwIBATCBmTCBgTETMBEGCgmSJomT8ixkARkWA2NvbTEZMBcGCgmSJomT8ixkARkW
|
||||
# CW1pY3Jvc29mdDEUMBIGCgmSJomT8ixkARkWBGNvcnAxFzAVBgoJkiaJk/IsZAEZ
|
||||
# FgdyZWRtb25kMSAwHgYDVQQDExdNU0lUIFRlc3QgQ29kZVNpZ24gQ0EgMwITQwMG
|
||||
# LpbRsruqZJ+lAAABAwYuljAJBgUrDgMCGgUAoHAwEAYKKwYBBAGCNwIBDDECMAAw
|
||||
# GQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisG
|
||||
# AQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFDFRa0VJKJQ1h2LG6dYzXKpBneOfMA0G
|
||||
# CSqGSIb3DQEBAQUABIIBAHbWmEOWfj37SNw8NDnAAg7bl0L3oyGVKPWysRnriHC9
|
||||
# aYImucAy2QXKo6YUWxHMqFvRPFrF07qkTDV249iC+L8gb1X0wwq/YuWWFbdN2J8s
|
||||
# 4CnN6I4Ff2AF4Co34MZGhtIHd3D7H1oPMelTlHQOc5CXyB/wkduoNgS0GCoeZXSK
|
||||
# DdMuN7dbru3PvCxe0ShzRwxBOa4EWZ6dHDAQRdrxkK2vVLWHg+6th8lRNnCJQeb+
|
||||
# 03tMRItnm/sAmKR9PCWm4YZob3ug9T9Qa1K00TuNskjXO+G2S2mjhFC5+HGKjLZd
|
||||
# bJydl0MIIMBtlLEGa4CcFtszxaww5Cx+YtCbxPp3iII=
|
||||
# SIG # End signature block
|
||||
"@
|
||||
}
|
||||
else
|
||||
{
|
||||
# Add correct signature
|
||||
$content += @"
|
||||
# SIG # Begin signature block
|
||||
# MIIPTAYJKoZIhvcNAQcCoIIPPTCCDzkCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
|
||||
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
|
||||
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUYkdwUPVVR4frPbdbTE8ZPwfD
|
||||
# +XegggyDMIIGFTCCA/2gAwIBAgITMwAAABrJQBS8Ii1KJQAAAAAAGjANBgkqhkiG
|
||||
# 9w0BAQsFADCBkDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
|
||||
# BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjE6
|
||||
# MDgGA1UEAxMxTWljcm9zb2Z0IFRlc3RpbmcgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo
|
||||
# b3JpdHkgMjAxMDAeFw0xNDAyMDQxODAyMjVaFw0xODAyMDQxODAyMjVaMIGBMRMw
|
||||
# EQYKCZImiZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MRQw
|
||||
# EgYKCZImiZPyLGQBGRYEY29ycDEXMBUGCgmSJomT8ixkARkWB3JlZG1vbmQxIDAe
|
||||
# BgNVBAMTF01TSVQgVGVzdCBDb2RlU2lnbiBDQSAzMIIBIjANBgkqhkiG9w0BAQEF
|
||||
# AAOCAQ8AMIIBCgKCAQEAuV1NahtVcKSQ6osSVsCcXSsk5finBZfPTbq39nQiX9L0
|
||||
# PY+5Zi73qGhDv3m+exmvWoYTgI2AQZ48lQtohf4QV0THWjsvvP/r12WZSlOfUGi5
|
||||
# 5639OAmXiAPpFwPffubajzyIcYBDthJonBlhRsGCWoSaZRBZnp/39tDDvHvQqb+i
|
||||
# w94CDTFfjcQ/K6xtSCNH1IaKQd6TP2mVdtbYBHIfuLWWO/quLuVgKKxz9sHjONVx
|
||||
# 9nEcWwatIPiz5J9TsR/bbDxzF5AH9U8jm++ZNECu2zYPhqNj9t3HKYOrUNIEi/b9
|
||||
# xYlQfMw85hPkMBTJWieyufXHkhzouvTzI3E+VhJ8EwIDAQABo4IBczCCAW8wEgYJ
|
||||
# KwYBBAGCNxUBBAUCAwEAATAjBgkrBgEEAYI3FQIEFgQUxeHTk4FfDvbJdORSZob2
|
||||
# 57rUxG4wHQYDVR0OBBYEFLU0zfVssWSEb3tmjxXucfADs2jrMBkGCSsGAQQBgjcU
|
||||
# AgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEA
|
||||
# MB8GA1UdIwQYMBaAFKMBBH4wiDPruTGcyuuFdmf8ZbTRMFkGA1UdHwRSMFAwTqBM
|
||||
# oEqGSGh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01p
|
||||
# Y1Rlc1Jvb0NlckF1dF8yMDEwLTA2LTE3LmNybDBdBggrBgEFBQcBAQRRME8wTQYI
|
||||
# KwYBBQUHMAKGQWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWlj
|
||||
# VGVzUm9vQ2VyQXV0XzIwMTAtMDYtMTcuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQBt
|
||||
# 9EVv44wAgXhIItfRrX2LjyEyig6DkExisf3j/RNwa3BLNK5PlfNjU/0H58V1k/Dy
|
||||
# S3CIzLhvn+PBCrpjWr5R1blkJbKQUdP/ZNz28QOXd0l+Ha3P6Mne1NNfXDAjkRHK
|
||||
# SqzndTxJT7s/03jYcCfh3JyiXzT8Dt5GXlWIr1wJfQljhzon3w9sptb5sIJTjB9Z
|
||||
# 0VWITkvAc2hVjFkpPPWkODXIYXYIRBxKjakXr7fEx3//ECQYcQrKBvUrLirEsI0g
|
||||
# mxQ2QO30iQMxug5l4VYSuHhjaN6t86OjyUySGeImiLLKpVZt1uXIggpepSS9b6Pt
|
||||
# cxqD0+L532oYNJMlT/Y04PGtyfKIVFMGYTmlHoHUU78BNrpGj6C/s+qyzwXpKDHI
|
||||
# eQ2RozXUzt4SS8W1E3YVxWU2AWnP0BdS7PSB9BvVCkIf1bfuM6s88iSGFh0qaZyG
|
||||
# sGDlU8s7YkS2i32+nTr5NJAH/v7yd6E7DQYZULBKdKfQDXuY+6s8kjg2OduGchge
|
||||
# aZZh2NLh2V5OgVrXx7CzM0K6TMZNJRhgaHE7dzT3EC2uZ6ZT/SIwxwfKXYDjsPxx
|
||||
# R4C9qkdnSDVCPncGAHhyR75i3fGJ28FHhd7mtePU+zbPJ/JGyADOdPDWgJFulg97
|
||||
# 809qAfXmu6I7+ObsqlCMl8hbpctmWSqqpd8wZ36ntTCCBmYwggVOoAMCAQICE0MD
|
||||
# Bi6W0bK7qmSfpQAAAQMGLpYwDQYJKoZIhvcNAQELBQAwgYExEzARBgoJkiaJk/Is
|
||||
# ZAEZFgNjb20xGTAXBgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxFDASBgoJkiaJk/Is
|
||||
# ZAEZFgRjb3JwMRcwFQYKCZImiZPyLGQBGRYHcmVkbW9uZDEgMB4GA1UEAxMXTVNJ
|
||||
# VCBUZXN0IENvZGVTaWduIENBIDMwHhcNMTQxMjIyMTk0MzQ3WhcNMTYxMjIxMTk0
|
||||
# MzQ3WjCBhDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
|
||||
# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEuMCwG
|
||||
# A1UEAxMlTWljcm9zb2Z0IENvcnBvcmF0aW9uIDNyZCBwYXJ0eSBXUCBXUzCCASIw
|
||||
# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL4ofcc4uy3h6Ai2Bh8guql21/+u
|
||||
# LMLhEeHbz5STKqMoxXqy8i3uRcK/oo57INq3H+cQ4yqvuUrPwi3wQE9OG7wO4ymc
|
||||
# 4M/3WTNVfjdOx0FK2y6UuKZpWQlwycuELbONrvXTzdtGuM0aiGbELRJFOq+742I+
|
||||
# G3x3otZrTSXC1m6aOoKb50rSqUJ0ENb1PMJV9GBTXnRDde7ub7W3jp9Dj0HxFnof
|
||||
# QRZSWfCDrO1l1hle7zPBuTnLfCXbma0oRHlTz3m3yEGlUQscxYu6BI+aJkKDKa5R
|
||||
# L2PCPnau3WuUMFsmQZk6pFrACxIvq+OZTLsorTsZUooCL/5V1ofaHahnJ68CAwEA
|
||||
# AaOCAtAwggLMMD0GCSsGAQQBgjcVBwQwMC4GJisGAQQBgjcVCIPPiU2t8gKFoZ8M
|
||||
# gvrKfYHh+3SBT4PGhWmH7vANAgFkAgErMAsGA1UdDwQEAwIHgDA4BgkrBgEEAYI3
|
||||
# FQoEKzApMA0GCysGAQQBgjdMBYIsMAwGCisGAQQBgjdMAwEwCgYIKwYBBQUHAwMw
|
||||
# LAYDVR0lBCUwIwYLKwYBBAGCN0wFgiwGCisGAQQBgjdMAwEGCCsGAQUFBwMDMB0G
|
||||
# A1UdDgQWBBT+6HzYZdp8xPv1xylrDwOMuYQkvDAwBgNVHREEKTAnoCUGCisGAQQB
|
||||
# gjcUAgOgFwwVZG9uZ2Jvd0BtaWNyb3NvZnQuY29tMB8GA1UdIwQYMBaAFLU0zfVs
|
||||
# sWSEb3tmjxXucfADs2jrMIHxBgNVHR8EgekwgeYwgeOggeCggd2GOWh0dHA6Ly9j
|
||||
# b3JwcGtpL2NybC9NU0lUJTIwVGVzdCUyMENvZGVTaWduJTIwQ0ElMjAzKDEpLmNy
|
||||
# bIZQaHR0cDovL21zY3JsLm1pY3Jvc29mdC5jb20vcGtpL21zY29ycC9jcmwvTVNJ
|
||||
# VCUyMFRlc3QlMjBDb2RlU2lnbiUyMENBJTIwMygxKS5jcmyGTmh0dHA6Ly9jcmwu
|
||||
# bWljcm9zb2Z0LmNvbS9wa2kvbXNjb3JwL2NybC9NU0lUJTIwVGVzdCUyMENvZGVT
|
||||
# aWduJTIwQ0ElMjAzKDEpLmNybDCBrwYIKwYBBQUHAQEEgaIwgZ8wRQYIKwYBBQUH
|
||||
# MAKGOWh0dHA6Ly9jb3JwcGtpL2FpYS9NU0lUJTIwVGVzdCUyMENvZGVTaWduJTIw
|
||||
# Q0ElMjAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL3d3dy5taWNyb3NvZnQu
|
||||
# Y29tL3BraS9tc2NvcnAvTVNJVCUyMFRlc3QlMjBDb2RlU2lnbiUyMENBJTIwMygx
|
||||
# KS5jcnQwDQYJKoZIhvcNAQELBQADggEBAFRprvk5BxGyn5On1ICDyKRw9rLqyMET
|
||||
# IDuBmX/enKuLRmETJSF7Dvzo/XbSXm+FTbGwnp5TOIPtCAeT0NuUAAjdo2iRT2Xr
|
||||
# wc/B4x2dWMJmFG86WmPPWByfw1gFSep1xN6vA9qPb2VAXTmz8Ta75vSmCEfRAqOC
|
||||
# 7U4uv3RBWImDx+7tI71XLKBmn1s1TTs1rL+43MsNMA7YNeM8/G0k2KbcNeLONNMG
|
||||
# wJwtlu9CutONhULkhi2C3T7huDtNZgg+LnTbNvZeXMhHtfx8obh1fmgfOrdLUgE9
|
||||
# 1YtW0F6mZ7OsdWPGV1wPOdRuNxgzGWvOIYCUTeeTU7b+Cifz/mTf/9QxggIzMIIC
|
||||
# LwIBATCBmTCBgTETMBEGCgmSJomT8ixkARkWA2NvbTEZMBcGCgmSJomT8ixkARkW
|
||||
# CW1pY3Jvc29mdDEUMBIGCgmSJomT8ixkARkWBGNvcnAxFzAVBgoJkiaJk/IsZAEZ
|
||||
# FgdyZWRtb25kMSAwHgYDVQQDExdNU0lUIFRlc3QgQ29kZVNpZ24gQ0EgMwITQwMG
|
||||
# LpbRsruqZJ+lAAABAwYuljAJBgUrDgMCGgUAoHAwEAYKKwYBBAGCNwIBDDECMAAw
|
||||
# GQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisG
|
||||
# AQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFDFRa0VJKJQ1h2LG6dYzXKpBneOfMA0G
|
||||
# CSqGSIb3DQEBAQUABIIBAHbWmEOWfj37SNw8NDnAAg7bl0L3oyGVKPWysRnriHC9
|
||||
# aYImucAy2QXKo6YUWxHMqFvRPFrF07qkTDV249iC+L8gb1X0wwq/YuWWFbdN2J8s
|
||||
# 4CnN6I4Ff2AF4Co34MZGhtIHd3D7H1oPMelTlHQOc5CXyB/wkduoNgS0GCoeZXSK
|
||||
# DdMuN7dbru3PvCxe0ShzRwxBOa4EWZ6dHDAQRdrxkK2vVLWHg+6th8lRNnCJQeb+
|
||||
# 03tMRItnm/sAmKR9PCWm4YZob3ug9T9Qa1K00TuNskjXO+G2S2mjhFC5+HGKjLZd
|
||||
# bJydl0MIIMBtlLEGa4CcFtszxaww5Cx+YtCbxPp3iII=
|
||||
# SIG # End signature block
|
||||
"@
|
||||
}
|
||||
}
|
||||
|
||||
set-content $filePath -Value $content
|
||||
|
||||
## Valida File types and their corresponding int values are :
|
||||
##
|
||||
## Local = -1
|
||||
## MyComputer = 0
|
||||
## Intranet = 1
|
||||
## Trusted = 2
|
||||
## Internet = 3
|
||||
## Untrusted = 4
|
||||
## We need to add alternate streams in all files except for the local file
|
||||
|
||||
if(-1 -ne $FileType)
|
||||
{
|
||||
$alternateStreamContent = @"
|
||||
[ZoneTransfer]
|
||||
ZoneId=$FileType
|
||||
"@
|
||||
Add-Content -Path $filePath -Value $alternateStreamContent -stream Zone.Identifier
|
||||
}
|
||||
}
|
||||
|
||||
foreach($fileInfo in $testFilesInfo)
|
||||
{
|
||||
createTestFile -FilePath $fileInfo.filePath -FileType $fileInfo.fileType -AddSignature:$fileInfo.AddSignature -Corrupted:$fileInfo.corrupted
|
||||
}
|
||||
|
||||
#Get Execution Policy
|
||||
$originalExecPolicy = Get-ExecutionPolicy
|
||||
$originalExecutionPolicy = $originalExecPolicy
|
||||
}
|
||||
AfterAll {
|
||||
#Clean up
|
||||
|
||||
$testDirectory = $remoteTestDirectory
|
||||
|
||||
Remove-Item $testDirectory -Recurse -Force -ea SilentlyContinue
|
||||
Remove-Item function:createTestFile -ea SilentlyContinue
|
||||
}
|
||||
Context "Validate that 'Restricted' execution policy works on OneCore powershell" {
|
||||
|
||||
BeforeAll {
|
||||
Set-ExecutionPolicy Restricted -Force | Out-Null
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
Set-ExecutionPolicy $originalExecutionPolicy -Force | Out-Null
|
||||
}
|
||||
|
||||
function Test-RestrictedExecutionPolicy
|
||||
{
|
||||
param ($testScript)
|
||||
|
||||
$TestTypePrefix = "Test 'Restricted' execution policy."
|
||||
|
||||
It "$TestTypePrefix Running $testScript script should raise PSSecurityException" -skip:(-not $IsWindows) {
|
||||
|
||||
$scriptName = $testScript
|
||||
|
||||
$exception = $null
|
||||
try {
|
||||
& $scriptName
|
||||
}
|
||||
catch
|
||||
{
|
||||
$exception = $_
|
||||
}
|
||||
|
||||
$exceptionType = $exception.Exception.getType()
|
||||
$result = $exceptionType
|
||||
|
||||
$result | Should be "System.Management.Automation.PSSecurityException"
|
||||
}
|
||||
}
|
||||
|
||||
$testScripts = @(
|
||||
$InternetSignatureCorruptedScript
|
||||
$InternetSignedScript
|
||||
$InternetUnsignedScript
|
||||
$IntranetSignatureCorruptedScript
|
||||
$IntranetSignedScript
|
||||
$IntranetUnsignedScript
|
||||
$LocalSignatureCorruptedScript
|
||||
$localSignedScript
|
||||
$LocalUnsignedScript
|
||||
$TrustedSignatureCorruptedScript
|
||||
$TrustedSignedScript
|
||||
$UntrustedSignatureCorruptedScript
|
||||
$UntrustedSignedScript
|
||||
$UntrustedUnsignedScript
|
||||
$TrustedUnsignedScript
|
||||
$MyComputerSignatureCorruptedScript
|
||||
$MyComputerSignedScript
|
||||
$MyComputerUnsignedScript
|
||||
)
|
||||
|
||||
foreach($testScript in $testScripts)
|
||||
{
|
||||
Test-RestrictedExecutionPolicy $testScript
|
||||
}
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
# Clean up
|
||||
$testDirectory = $remoteTestDirectory
|
||||
|
||||
Remove-Item $testDirectory -Recurse -Force -ea SilentlyContinue
|
||||
Remove-Item function:createTestFile -ea SilentlyContinue
|
||||
}
|
||||
Context "Validate that 'Unrestricted' execution policy works on OneCore powershell" {
|
||||
|
||||
BeforeAll {
|
||||
Set-ExecutionPolicy Unrestricted -Force | Out-Null
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
Set-ExecutionPolicy $originalExecutionPolicy -Force | Out-Null
|
||||
}
|
||||
|
||||
function Test-UnrestrictedExecutionPolicy {
|
||||
|
||||
param($testScript, $expected)
|
||||
|
||||
$TestTypePrefix = "Test 'Unrestricted' execution policy."
|
||||
|
||||
It "$TestTypePrefix Running $testScript script should return $expected" -skip:(-not $IsWindows) {
|
||||
$scriptName = $testScript
|
||||
|
||||
$result = & $scriptName
|
||||
|
||||
$result | Should be $expected
|
||||
}
|
||||
}
|
||||
|
||||
$expected = "Hello"
|
||||
$testScripts = @(
|
||||
$IntranetSignatureCorruptedScript
|
||||
$IntranetSignedScript
|
||||
$IntranetUnsignedScript
|
||||
$LocalSignatureCorruptedScript
|
||||
$localSignedScript
|
||||
$LocalUnsignedScript
|
||||
$TrustedSignatureCorruptedScript
|
||||
$TrustedSignedScript
|
||||
$TrustedUnsignedScript
|
||||
$MyComputerSignatureCorruptedScript
|
||||
$MyComputerSignedScript
|
||||
$MyComputerUnsignedScript
|
||||
)
|
||||
|
||||
foreach($testScript in $testScripts) {
|
||||
Test-UnrestrictedExecutionPolicy $testScript $expected
|
||||
}
|
||||
}
|
||||
|
||||
Context "Validate that 'ByPass' execution policy works on OneCore powershell" {
|
||||
|
||||
BeforeAll {
|
||||
Set-ExecutionPolicy Bypass -Force | Out-Null
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
Set-ExecutionPolicy $originalExecutionPolicy -Force | Out-Null
|
||||
}
|
||||
|
||||
function Test-ByPassExecutionPolicy {
|
||||
|
||||
param($testScript, $expected)
|
||||
|
||||
$TestTypePrefix = "Test 'ByPass' execution policy."
|
||||
|
||||
It "$TestTypePrefix Running $testScript script should return $expected" -skip:(-not $IsWindows) {
|
||||
$scriptName = $testScript
|
||||
|
||||
$result = & $scriptName
|
||||
return $result
|
||||
|
||||
$result | Should be $expected
|
||||
}
|
||||
}
|
||||
|
||||
$expected = "Hello"
|
||||
$testScripts = @(
|
||||
$InternetSignatureCorruptedScript
|
||||
$InternetSignedScript
|
||||
$InternetUnsignedScript
|
||||
$IntranetSignatureCorruptedScript
|
||||
$IntranetSignedScript
|
||||
$IntranetUnsignedScript
|
||||
$LocalSignatureCorruptedScript
|
||||
$LocalSignedScript
|
||||
$LocalUnsignedScript
|
||||
$TrustedSignatureCorruptedScript
|
||||
$TrustedSignedScript
|
||||
$TrustedUnsignedScript
|
||||
$UntrustedSignatureCorruptedScript
|
||||
$UntrustedSignedScript
|
||||
$UntrustedUnSignedScript
|
||||
$MyComputerSignatureCorruptedScript
|
||||
$MyComputerSignedScript
|
||||
$MyComputerUnsignedScript
|
||||
)
|
||||
foreach($testScript in $testScripts) {
|
||||
Test-ByPassExecutionPolicy $testScript $expected
|
||||
}
|
||||
}
|
||||
|
||||
Context "'RemoteSigned' execution policy works on OneCore powershell" {
|
||||
|
||||
BeforeAll {
|
||||
Set-ExecutionPolicy RemoteSigned -Force | Out-Null
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
Set-ExecutionPolicy $originalExecutionPolicy -Force
|
||||
}
|
||||
|
||||
function Test-RemoteSignedExecutionPolicy {
|
||||
|
||||
param($testScript, $expected, $error)
|
||||
|
||||
$TestTypePrefix = "Test 'RemoteSigned' execution policy."
|
||||
|
||||
It "$TestTypePrefix Running $testScript script should return $expected" -skip:(-not $IsWindows) {
|
||||
$scriptName=$testScript
|
||||
|
||||
$scriptResult = $null
|
||||
$exception = $null
|
||||
|
||||
try
|
||||
{
|
||||
$scriptResult = & $scriptName
|
||||
}
|
||||
catch
|
||||
{
|
||||
$exception = $_
|
||||
}
|
||||
|
||||
$errorType = $null
|
||||
if($null -ne $exception)
|
||||
{
|
||||
$errorType = $exception.exception.getType()
|
||||
$scriptResult = $null
|
||||
}
|
||||
$result = @{
|
||||
"result" = $scriptResult
|
||||
"exception" = $errorType
|
||||
}
|
||||
|
||||
$actualResult = $result."result"
|
||||
$actualError = $result."exception"
|
||||
|
||||
$actualResult | Should be $expected
|
||||
$actualError | Should be $error
|
||||
}
|
||||
}
|
||||
$message = "Hello"
|
||||
$error = "System.Management.Automation.PSSecurityException"
|
||||
$testData = @(
|
||||
@{
|
||||
testScript = $LocalUnsignedScript
|
||||
expected = $message
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $LocalSignatureCorruptedScript
|
||||
expected = $message
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $LocalSignedScript
|
||||
expected = "Hello"
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $MyComputerUnsignedScript
|
||||
expected = $message
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $MyComputerSignatureCorruptedScript
|
||||
expected = $message
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $myComputerSignedScript
|
||||
expected = $message
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $TrustedUnsignedScript
|
||||
expected = $message
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $TrustedSignatureCorruptedScript
|
||||
expected = $message
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $TrustedSignedScript
|
||||
expected = $message
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $IntranetUnsignedScript
|
||||
expected = $message
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $IntranetSignatureCorruptedScript
|
||||
expected = $message
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $IntranetSignedScript
|
||||
expected = $message
|
||||
error = $null
|
||||
}
|
||||
@{
|
||||
testScript = $InternetUnsignedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $InternetSignatureCorruptedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $UntrustedUnsignedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $UntrustedSignatureCorruptedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
)
|
||||
|
||||
foreach($testCase in $testData) {
|
||||
Test-RemoteSignedExecutionPolicy @testCase
|
||||
}
|
||||
}
|
||||
|
||||
Context "Validate that 'AllSigned' execution policy works on OneCore powershell" {
|
||||
|
||||
BeforeAll {
|
||||
Set-ExecutionPolicy AllSigned -Force
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
Set-ExecutionPolicy $originalExecutionPolicy -Force
|
||||
}
|
||||
|
||||
function Test-AllSignedExecutionPolicy {
|
||||
|
||||
param($testScript, $error)
|
||||
|
||||
$TestTypePrefix = "Test 'AllSigned' execution policy."
|
||||
|
||||
It "$TestTypePrefix Running $testScript script should return $error" -skip:(-not $IsWindows) {
|
||||
|
||||
$scriptName = $testScript
|
||||
|
||||
$exception = $null
|
||||
try
|
||||
{
|
||||
& $scriptName
|
||||
}
|
||||
catch
|
||||
{
|
||||
$exception = $_
|
||||
}
|
||||
$errorType = $null
|
||||
|
||||
if($null -ne $exception)
|
||||
{
|
||||
$errorType = $exception.exception.getType()
|
||||
}
|
||||
|
||||
$result = $errorType
|
||||
|
||||
$result | Should be $error
|
||||
}
|
||||
}
|
||||
$error = "System.Management.Automation.PSSecurityException"
|
||||
$testData = @(
|
||||
@{
|
||||
testScript = $LocalUnsignedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $LocalSignatureCorruptedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $MyComputerUnsignedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $MyComputerSignatureCorruptedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $TrustedUnsignedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $TrustedSignatureCorruptedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $IntranetUnsignedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $IntranetSignatureCorruptedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $InternetUnsignedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $InternetSignatureCorruptedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $UntrustedUnsignedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
@{
|
||||
testScript = $UntrustedSignatureCorruptedScript
|
||||
expected = $null
|
||||
error = $error
|
||||
}
|
||||
)
|
||||
foreach($testScript in $testScripts) {
|
||||
Test-AllSignedExecutionPolicy $testScript $error
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Describe "Validate that 'ConvertTo-SecureString -Key' and 'ConvertFrom-SecureString -Key' work on NanoServer and IoT" -Tags "Innerloop", "BVT" {
|
||||
|
||||
It "ConvertTo-SecureString should return back the SecureString that was constructed from 'ValidateConvertSecureString'." -skip:(-not $IsWindows) {
|
||||
|
||||
$testString = "ValidateConvertSecureString"
|
||||
$secureString = ConvertTo-SecureString -String "ValidateConvertSecureString" -AsPlainText -Force
|
||||
$key = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43)
|
||||
|
||||
$encryptedString = ConvertFrom-SecureString -SecureString $secureString -Key $key
|
||||
$decryptedString = ConvertTo-SecureString -String $encryptedString -Key $key
|
||||
|
||||
$cred = [pscredential]::new("domain\user", $decryptedString)
|
||||
$netCred = $cred.GetNetworkCredential()
|
||||
$password = $netCred.Password
|
||||
|
||||
$password | Should be $testString
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue