重启后恢复powershell脚本

时间:2017-11-30 12:38:19

标签: powershell

我有很多关于这个主题的文章,但没有一个是可以理解的。

我的要求非常简单。我有两部分代码;首先,代码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

2 个答案:

答案 0 :(得分:0)

如果您不想使用日志文件来自行查看它停止的位置,可以查看powershell工作流程,它允许在重新启动后进行恢复。见https://technet.microsoft.com/en-us/library/jj574130(v=ws.11).aspx

答案 1 :(得分:0)

powershell命令非常复杂,我决定使用批处理文件。

Resume batch script after computer restart