我有很多关于这个主题的文章,但没有一个是可以理解的。
我的要求非常简单。我有两部分代码;首先,代码1应该工作,并且应该重新启动窗口。重启完成后,代码2应该正常工作。这个过程应该在后台默默完成。 Powershell版本为4.0(Win 2012 R2)
代码1 - 此代码正在更改计算机主DNS后缀。
$computerName = $env:computername
$DNSSuffix = "abc.com"
$oldDNSSuffix = (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\" -Name "NV Domain")."NV Domain"
#Update primary DNS Suffix for FQDN
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\" -Name Domain -Value $DNSSuffix
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\" -Name "NV Domain" -Value $DNSSuffix
#Update DNS Suffix Search List - Win8/2012 and above - if needed
#Set-DnsClientGlobalSetting -SuffixSearchList $oldDNSSuffix,$DNSSuffix
#Update AD's SPN records for machine if part of an AD domain
if ((gwmi win32_computersystem).partofdomain -eq $true) {
$searchAD = new-object System.DirectoryServices.DirectorySearcher
$searchAD.filter = "(&(objectCategory=computer)(cn=$($computerName)))"
$searchADItem = $searchAD.FindAll() | select -first 1
$adObj= [ADSI] $searchADItem.Path
$oldadObjSPN = $searchADItem.Properties.serviceprincipalname
$adObj.Put('serviceprincipalname',($oldadObjSPN -replace $oldDNSSuffix, $DNSSuffix))
$oldadObjDNS = $searchADItem.Properties.dnsHostName
$adObj.Put('dnsHostName',($oldadObjDNS -replace $oldDNSSuffix, $DNSSuffix))
$adObj.setinfo()
#$adObj.Get('serviceprincipalname')
#$adObj.Get('dnsHostName')
}
代码2 - 在此计算机上安装终端服务
Import-Module RemoteDesktop
Add-WindowsFeature -Name RDS-RD-Server -IncludeAllSubFeature
Add-WindowsFeature -Name RDS-Licensing -IncludeAllSubFeature
答案 0 :(得分:0)
如果您不想使用日志文件来自行查看它停止的位置,可以查看powershell工作流程,它允许在重新启动后进行恢复。见https://technet.microsoft.com/en-us/library/jj574130(v=ws.11).aspx
答案 1 :(得分:0)
powershell命令非常复杂,我决定使用批处理文件。