我正在使用安装介质上的默认boot.wim文件设置Windows Server 2012无人参与部署的Windows部署服务 (WDS)。 我有一个PowerShell脚本为我们的网站执行自动定制。 我希望这个脚本能够在specialize版本中运行,所以我不必为了自动login而烦恼,并且能够在configuration期间保存自己的重启。 该脚本似乎不运行,日志只会提供一个无益的错误代码。
这里是我的无人参与文件的相关部分:
<settings pass="specialize"> <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <RunSynchronous> <RunSynchronousCommand wcm:action="add"> <Order>1</Order> <Credentials> <Domain>WDSSERVER</Domain> <Password>APASSWORD</Password> <Username>AUSERNAME</Username> </Credentials> <Path>"c:\windows\system32\windowspowershell\v1.0\powershell.exe" -executionpolicy unrestricted -command "\\<REMOTESERVER>\reminst\customize\specialize.ps1"</Path> </RunSynchronousCommand> </RunSynchronous> </component> </settings>
回应kce的请求。 这是脚本本身:
write-host "Executing customisation script." write-host "enabling powershell script execution" Set-ExecutionPolicy Unrestricted write-host "Bringing non-system disks online..." Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False Set-Disk -Number 1 -IsReadOnly $False Set-Disk -Number 2 -IsReadOnly $False write-host "Setting up NTP..." W32tm /register start-service w32time w32tm /config /manualpeerlist:uk.pool.ntp.org restart-service w32time Set-Service W32Time -StartupType Automatic sc triggerinfo w32time start/networkon stop/networkoff sc config W32Time start=auto write-host "Determining system RAM and setting pagefile..." $RAM = Get-WmiObject -Class Win32_OperatingSystem | Select TotalVisibleMemorySize $RAM = ($RAM.TotalVisibleMemorySize / 1kb).tostring("F00") write-host "disable automanage" wmic computersystem set AutomaticManagedPagefile=False Write-Host "removing old pagefile" wmic pagefileset delete write-host "creating new pagefile on E:\" wmic pagefileset create name=“e:\pagefile.sys” write-host "set size" $PageFile = Get-WmiObject -Class Win32_PageFileSetting $PageFile.InitialSize = $RAM $PageFile.MaximumSize = $RAM [void]$PageFile.Put() write-host "Disabling Windows Firewall..." netsh advfirewall set allprofiles state off write-host "Enabling powershell remoting..." Enable-PSRemoting -Force write-host "Sorting out remote management trusted hosts..." winrm s winrm/config/client '@{TrustedHosts="*"}' write-host "Disabling Windows error reporting..." Disable-WindowsErrorReporting write-host "Installing VMware Tools..." c:\vmware-tools.exe /S /v"/qn"
从我正在阅读的内容来看,未抛出的抛出导致退出码是一个。 另外,你通过-command开关传递脚本path,当它通过-file开关时, 看参考 。 -command将把你的string视为一个命令,因为它是一个文件path,它会在PowerShell窗口中抛出我们喜欢的那些相同的红色字母exception,瞧! 由于exception未被捕获,请退出代码1。 当然这只是猜测,除非
"powershell.exe" -executionpolicy bypass -noprofile -file "\\<REMOTESERVER>\reminst\customize\specialize.ps1"
实际上工作,假设它正在运行的帐户有权限的文件共享。 为避免这些权限问题,您可以将代码粘贴到{}之间的答案文件中,然后使用-command选项,
"powershell.exe" -executionpolicy bypass -noprofile -command {...}