我在企业环境中工作,在那里我管理着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上太新了解如何使用它,任何人都可以帮助我吗?
更多信息:
答案 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)