如何在powershell脚本中验证域凭据

时间:2017-02-20 05:53:34

标签: powershell

我有一个powershell脚本,用于验证每个Windows映像中的多个测试。但是,当我使用此脚本时,以下特定测试需要使用域凭据才能成功运行!

任何人都可以帮我修理吗?

if (($ImageName -like "*dev*") -or ($ImageName -like "*bare*"))
    {
        #$ADE1 = Invoke-Expression ('C:\ade\bin\ade.exe | select-string -pattern "begintrans"') | out-string ; $ADE = $ADE1.trim().split("")[1]
        Invoke-Expression ('C:\ade\bin\ade.exe | select-string -pattern "begintrans"') > C:\Temp\ade_check.txt 
        $ADE1 = Get-Content C:\Temp\ade_check.txt | Select-String "begintrans" | out-string ;  $ADE = $ADE1.trim().split(" ")[1]

        if ($ADE -eq "begintrans")
        {
        $ADE = "ADE Success"
echo "ADE = ADE Success"
        }

        if ($ADE -eq $null){
        $ADE = "ADE Failed"
echo "ADE = ADE Failed"
        }

    }
    else
        {
        if (($ImageName -like "*simple*") -or ($ImageName -like "*BareOS*")){

        $ADE = "BareOS, ADE Not Installed"
echo "ADE = BareOS, ADE Not Installed"
        }
        }

1 个答案:

答案 0 :(得分:0)

正如@vonPryz所建议的,在经过身份验证的远程会话中运行脚本可能是最好的选择。关于您需要Get-Credential来实例化远程会话并询问用户名和密码,至少有两个选项:

  1. 即时创建PSCredential
  2. 从磁盘读取加密凭据
  3. 动态创建PSCredential

    此处描述了从明文密码创建凭据: Creating a PS Credential from a Clear Text Password in Powershell

    你基本上跑:

    PS C:\> $password = "P@ssw0rd" | ConvertTo-SecureString -asPlainText -Force
    PS C:\> $username = "EdgarSchnittenfittich" 
    PS C:\> $credential = New-Object System.Management.Automation.PSCredential($username,$password)
    

    从磁盘读取加密凭据

    拥有PSCredential对象后,您可以通过Export-CliXml以加密形式将其导出。要导入您的凭据,只需发出Import-CliXml。凭据以加密形式存储,并带有不透明的加密密钥,用于导出凭据的当前用户。这意味着以后只有同一个用户才能再次导入凭据。

    示例:

    $cred = Get-PSCredential;
    $cred | Export-CliXml C:\TEMP\Credentials.xml;
    
    $importedCredentials = Import-CliXml C:\TEMP\Credentials.xml;
    

    运行脚本

    • 使用这些凭据,您可以通过Enter-PSSessionInvoke-Command轻松运行任何脚本。
    • 关于您的Jenkins环境:请确保将加密的凭据导出到用于导入凭据的同一服务帐户下。