我想通过powershell运行一些命令来远程执行Sysprep。
因此,首先我创建了一个会话,使用如下:
$UserName = "IPAddress\username"
$Password = ConvertTo-SecureString "password" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($UserName, $Password)
$s = New-PSSession -ComputerName IPAddress -Credential $psCred然后分配Sysprep中使用的变量:
$sysprep = 'C:\Windows\System32\Sysprep\Sysprep.exe'
$arg = '/generalize /oobe /shutdown /quiet'
$sysprep += " $arg"最后运行以下命令:
Invoke-Command -Session $s -ScriptBlock {$sysprep}当我运行最后一个命令时,脚本块中没有发生任何actually.But,而不是$sysprep,如果我给出任何其他命令,比如开始/停止一个服务,它就会给出一些响应。但是,SysPrep命令在work.Can看来似乎没有人建议我做错了什么。
发布于 2018-09-03 06:50:27
您正在尝试调用scriptblock对象来运行,而$sysprep是字符串。为此,您需要使用Start-Process cmdlet。就像这样:
$sysprep = 'C:\Windows\System32\Sysprep\Sysprep.exe'
$arg = '/generalize /oobe /shutdown /quiet'
Invoke-Command -Session $s -ScriptBlock {param($sysprep,$arg) Start-Process -FilePath $sysprep -ArgumentList $arg} -ArgumentList $sysprep,$arghttps://stackoverflow.com/questions/52144405
复制相似问题