Powershell:安全字符串'加密密钥'用法---加入域脚本

时间:2015-08-27 20:27:47

标签: string security powershell dns key

我在企业环境中工作,在那里我管理着75台计算机的实验室。我使用Ghost进行映像,然后我在计算机上行走以更改PC名称和SID。

我正在实现一个脚本来自动将计算机添加到域中,但我是PowerShell的新手,非常感谢帮助。这是我使用的脚本,1.ps1:

    Param (
    [String]$User = $(Throw "MYDOMAINUSERINFO"),
     [String]$Domain = "MYDOMAININFO",
     [String]$PathToCred = "C:\OMC\AutoPost"
     ) 

    #Make sure our path string has a trailing backslash
    If ($PathToCred[$PathToCred.Length - 1] -ne "\")
    {    $PathToCred += "\"
    }

    #Now create file string
    $File = $PathToCred + "JoinDomain-$User.crd"

    #And find out if it's there, if not create it
    If (-not (Test-Path $File))
    {    (Get-Credential).Password | ConvertFrom-SecureString | Set-Content $File
    }

    #Load the credential file
    $Password = Get-Content $File | ConvertTo-SecureString
    $Credential = New-Object System.Management.Automation.PsCredential($User,$Password)

    #Add the computer to the domain
    Add-Computer -DomainName $Domain -Credential $Credential

我使用放在启动文件夹中的批处理文件运行此脚本。

   Powershell.exe -ExecutionPolicy Bypass C:\OMC\AutoPost\1.ps1 -User MYDOMAINUSERINFO -Domain MYDOMAININFO -PathToCred C:\OMC\AutoPost\

运行此脚本可正常运行,它会创建凭据文件,读取凭据文件并加入域。重影和行走后运行此脚本不起作用,我收到错误:

    Key not valid for use in specified state.

我认为这是因为计算机知道某些事情发生了变化。我使用相同的用户帐户添加到域中,因为我最初构建了凭据,因此我认为计算机拒绝这些凭据,因为SID已更改。

我在线阅读我可以使用[-key Byte []]来设置标准加密密钥,这样我就可以解决这个错误。我在PowerShell上太新了解如何使用它,任何人都可以帮助我吗?

更多信息:

https://technet.microsoft.com/en-us/library/hh849814.aspx

http://ss64.com/ps/convertfrom-securestring.html

1 个答案:

答案 0 :(得分:0)

Powershell SecureString使用加密用户作为加密密钥加密,这意味着其他用户无法对其进行解密,但是您可以在加密时指定其他密钥并再次使用它进行解密,当然这不安全,但这是您的决定。

创建凭据并将其导出到文件:

$credential = Get-Credential
$Key = [byte]1..16
$credential.Password | ConvertFrom-SecureString -Key $Key | Set-Content $File

加载它更新脚本部分

#Load the credential file

$Key = [byte]1..16
$Password = Get-Content $File | ConvertTo-SecureString -Key $Key
$Credential = New-Object System.Management.Automation.PsCredential($User,$Password)