Удаленные сценарии, содержащие MotW, не содержащие MotW и ExecutionPolicy RemoteSigned, не тестируются

Я работаю с политикой Powershell как "RemoteSigned"настроен раньше Powershell.Invoke() выполняет. У меня есть файл сценария, содержащий MotW, который, конечно, не подписан. Все, что я хочу проверить на своей машине / на тестовом сервере, что загруженный файл удаленного сценария не должен выполняться, потому что я настроил политику как RemoteSigned.

Но я видел странное поведение. На моем локальном компьютере файл сценария (например, UnsignedRemoteScript.ps1) правильно развертывается в моем каталоге тестов развертывания в первую очередь и содержит MotW, каким он был раньше. Но, к сожалению, сначала он не копировал в TestDirectory на других машинах. После того как я проверилEnable Deployment' в Local.testsettings, он начал развертываться, но MotW не остался нетронутым, как на моей машине. Вот почему тест get get терпит неудачу и на всех других машинах. Я попытался выполнить сценарий, указав путь unc path, но я не уверен, что сценарий powershell для создания пути unc является правильным или нет.

Я не знаю, в чем причина. Неправильно ли создание пути unc? Какой путь unc связан с этой историей?

Следующий код

public void Setup()
{
    var iss = InitialSessionState.CreateDefault();
    iss.ExecutionPolicy = ExecutionPolicy.RemoteSigned;
    var powInstance = PowerShell.Create();
}

[TestMethod]
[DeploymentItem(@"Path.......\RandomData.ps1")]
public void 
ExecuteRemoteScriptWithoutSignMustOutputUnauthorizedAccessException()
{
        var runRemoteScript = "...\..\RunRemoteScript.ps1"
        var pipelineCommand = new Command(runRemoteScript, true);
        powInstance.Commands.AddCommand(pipelineCommand);

        powInstance.AddArgument(TestDeploymentDirectory);

        powInstance.Invoke();

        Assert.IsTrue(powInstance.Streams.Error.Any(), "Execution Policy evaluation failed. " +
                                                                "Script is not digitally signed.");

        Assert.IsTrue(powInstance.Streams.Error[0].Exception != null,
                        "Exception not available while script execution policy evaluation");
        Assert.AreEqual(powInstance.Streams.Error[0].FullyQualifiedErrorId, "UnauthorizedAccess");

        StringAssert.Contains(powInstance.Streams.Error[0].Exception.Message,"digitally signed",
                                "Execution Policy evaluation failed." +
                                "Script execution policy found to be other than remote digitally signed");
}

Скрипт, выполняющий удаленный скрипт с использованием unc path

File : RunRemoteScript.ps1

Param($remoteScriptPath)
Set-Location $remoteScriptPath

$drive = Get-PSDrive -Name (Get-location).Drive.Name
$root = if($drive.DisplayRoot -ne $null){$drive.DisplayRoot} else {$drive.Root}
$uncPath = Join-Path -Path $root -ChildPath $drive.CurrentLocation
cd $uncPath

.\RemoteUnsignedScript.ps1

Кто-нибудь может мне помочь в этом отношении

0 ответов

Другие вопросы по тегам