【发布时间】:2018-02-16 22:33:35
【问题描述】:
我可以在 Linux 上运行以下代码以成功卸载磁盘。
alldisks=`/sbin/sfdisk -s | grep -v 'total' | awk -F':' '{print $1}'`
unmounted_disks=""
for disk in $alldisks
do
/sbin/blkid -o list | grep -q "$disk"
if [ $? -ne 0 ]; then
unmounted_disks="$unmounted_disks $disk"
fi
done
echo $unmounted_disks
但我正在使用 PowerShell 通过工作簿自动执行此操作。在使用New-SSHSession 连接后,我尝试了以下发送到 Linux 的方式:
**$script** = ('alldisks=`/sbin/sfdisk -s | grep -v ''total'' | awk -F '':'' ''{print $1}''`
unmounted_disks=""
echo $unmounted_disks
for disk in $alldisks
do /sbin/blkid -o list | grep -q ''$disk''
`n
if [ $? -ne 0 ]
then unmounted_disks=''$unmounted_disks $disk''
fi
done
echo $unmounted_disks')
$output = **Invoke-SSHCommand** -Index $session.SessionId **-Command $script** -TimeOut 900 -ErrorAction Stop
我得到以下错误:
bash:-c:第 8 行:意外标记 `fi' 附近的语法错误
bash:-c:第 8 行:` fi '
【问题讨论】:
-
首先获得一个更简单的命令来工作,然后开始添加花哨的东西。我还建议加入 1990 年代并使用命令替换的“现代”形式(即
var=$( myCmd))而不是反引号。最后,假设将其作为一行处理,并用;字符分隔所有 cmd 序列。祝你好运。 -
谢谢谢特。我试过了,但是,双用。如果您能准确指出如果您编写命令的外观,将不胜感激。我的意思是整个 $script 变量
-
什么“工作簿”? PowerShell 代码中的星号是做什么用的?
标签: linux powershell automation