私の仕事では、特定のサーバーから OS 情報を取得し、その情報を特定のサーバーに保管する必要があります。これをpowershellで行い、wmiを使用して情報を取得したいと思います。
すべてのサーバーに powershell がインストールされており、両方の間で SSH 接続が可能です。
おそらく最も簡単な方法は、リモートの powershell コマンドを実行することですが、すべてのサーバーでリモート サービスを有効にする必要があり、それを避けたいと考えています。別のアプローチは、PS でコマンド「Invoke-Expression」を使用し、plink を使用して接続することです。
私が使いたいのはこのアプローチです。それに関する多くの情報を見つけ、それを使用してリモートシェルコマンドやリモートpowershellコマンドを実行する方法を発見しました(コマンドの前に「powershell」を配置しながら)。
これは機能します:
$output = Invoke-Expression 'echo y | & "C:\Program Files\PuTTY\plink.exe" -ssh $username@$hostname -pw $password "powershell gwmi Win32_OperatingSystem"'
しかし、それは私が必要とする情報を提供しません。" " を使用する代わりに " gwmi Win32_OperatingSystem
" を使用したいのでgwmi Win32_OperatingSystem | select-object caption
、必要な情報が得られるはずです。しかし、私は引用符で立ち往生しています。私が試したものは何でも、これを機能させることができません.select-object部分で常にエラーが発生します. これについてインターネットで調べてみましたが、何も見つかりませんでした。これを解決する方法を知っている人はいますか?
よろしく、
マティアス