PowerCLI V11运行Bash脚本报错,如何正确整合指定磁盘查询命令
问题解决方法
报错原因
你遇到的报错核心是PowerShell字符串转义规则与Bash命令的特殊符号冲突:
- 你用双引号定义
$command变量时,内部awk语句的" "、$5、$1都会被PowerShell提前解析,不会原样传给目标虚拟机的Bash环境 - 多层引号嵌套也会导致命令被意外截断,无法正常执行
最优解决方案
使用PowerShell单引号包裹的这里字符串(here-string)定义Bash命令,无需任何额外转义,所有内容会原样传递:
$vm= "server" $adminGuest="root" $adminGuestPwd="pass" # 单引号边界字符串 @' ... '@ 内部所有特殊字符原样保留 $command = @' df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' '@ Invoke-VMScript -vm $vm -ScriptText $command -GuestUser $adminGuest -GuestPassword $adminGuestPwd -ScriptType Bash
备用方案(不使用here-string)
如果需要用普通双引号定义命令,需要用PowerShell转义符反引号()转义所有内部双引号和$`符号:
$command = "df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print `$5 `" `" `$1 }'"
内容的提问来源于stack exchange,提问作者oussama_tr
相关产品推荐
相关产品推荐

