通过Azure powershell中的命令远程运行SysPrep

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过Azure powershell中的命令远程运行SysPrep相关的知识,希望对你有一定的参考价值。

我想运行一些命令来通过PowerShell远程执行Sysprep。

所以首先我用这个创建一个会话:

$UserName = "IPAddressusername"
$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:WindowsSystem32SysprepSysprep.exe'
$arg = '/generalize /oobe /shutdown /quiet'
$sysprep += " $arg"

最后运行这个:

Invoke-Command -Session $s -ScriptBlock {$sysprep}

当我运行最后一个命令时,实际上什么也没发生。但是在脚本块中,而不是$sysprep,如果我给出任何其他命令,比如启动/停止服务,它会给出一些响应。但SysPrep命令似乎不起作用。任何人都可以建议我做错了什么。

答案

您正在尝试调用scriptblock对象,而$sysprep是一个字符串。您可能希望使用Start-Process cmdlet。像这样:

$sysprep = 'C:WindowsSystem32SysprepSysprep.exe'
$arg = '/generalize /oobe /shutdown /quiet'
Invoke-Command -Session $s -ScriptBlock {param($sysprep,$arg) Start-Process -FilePath $sysprep -ArgumentList $arg} -ArgumentList $sysprep,$arg

以上是关于通过Azure powershell中的命令远程运行SysPrep的主要内容,如果未能解决你的问题,请参考以下文章

Azure运维系列 8:使用现有磁盘创建虚拟机

如何通过powershell或C#使用本地IP远程更新azure SQL防火墙

通过PowerShell命令给Azure VM添加CustomScriptExtension

如何在PowerShell中使用.NET Framework

Powershell远程在Azure A7虚拟机执行Java JVM失败

用于获取 Azure 监视器警报规则的 Powershell 命令不起作用