如何在WDS部署的专门化传递期间运行PowerShell脚本?

我正在使用安装介质上的认boot.wim文件Windows Server 2012无人参与部署设置 Windows Deployment Services(WDS).我有一个PowerShell脚本,可以为我们的网站执行自动定制.我希望这个脚本在specialize pass期间运行,所以我不必乱用自动登录,并且能够在配置期间保存自己重启.该脚本似乎没有运行,日志只提供无用的错误代码.

这是我的无人参与文件的相关部分:

<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"
从我正在阅读的内容来看,未抛出的抛出导致退出代码为1.此外,当它应该通过-file开关传递时,你通过-command开关传入脚本路径;请参阅 the reference. -command会将您的字符串视为一个命令,因为它是一个文件路径,它会在PowerShell窗口中抛出我们喜欢的那些相同的红色字母异常之一,瞧!退出代码1,因为异常未被捕获.当然,所有这些都是猜测,除非
"powershell.exe" -executionpolicy bypass -noprofile -file "\\<REMOTESERVER>\reminst\customize\specialize.ps1"

实际上是有效的,假设它运行的帐户具有文件共享的权限.要避免这些权限问题,您只需将代码粘贴到{}之间的答案文件中,然后使用-command选项,

"powershell.exe" -executionpolicy bypass -noprofile -command {...}

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...