2017-09-08 11 views
1

Linux上で以下のコードを実行して、マウントされていないディスクを正常に取得できます。PowerShellから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: line 8: syntax error near unexpected token `fi'
bash: -c: line 8: `               fi '

+1

は、はるかに簡単にコマンドを取得します最初に仕事をしてから、派手なものを追加し始めましょう。また、1990年代に入って、バックチックの代わりに「現代的」なコマンド置換(つまり、var = $(myCmd))を使用することをお勧めします。最後に、それが1行として処理され、すべてのcmdシーケンスを ';'文字で区切ります。がんばろう。 – shellter

+0

シェルターに感謝します。私は試みたが、二重使用。あなたが書かれていれば、コマンドがどのように見えるかを正確に指摘することができれば感謝します。私は全体の$スクリプト変数を意味します –

+0

"ブック"とは何ですか? PowerShellコードのアスタリスクは何ですか? –

答えて

0

は、あなたのスクリプトのhere-stringを使用します。

$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" 
    if [ $? -ne 0 ]; then 
    unmounted_disks="$unmounted_disks $disk" 
    fi 
done 
echo $unmounted_disks 
'@ 
関連する問題