ここでは他にもいくつかの質問を確認しましたが、必要なものを見つけることができませんでした。現在、どのHyper-VサーバーにどのようなVMが含まれているかを調べるプロセスを自動化しようとしています。ここに私の現在のスクリプトがあります。cmdまたはpowershellを使用してテキストを解析および削除する
@echo off
set /P dc= "Which DC do you want? "
dsquery computer -name %DC%VUT* > dsquery.txt
type dsquery.txt | findstr /v IMAGINGOU | findstr /v OTHEROU > dsquery2.txt
powershell -command Get-Content dsquery2.txt | ForEach-Object { $_ -replace '"CN=', "" } | Set-Content dsquery3.txt
powershell -command Get-Content dsquery3.txt | ForEach-Object { $_ -replace ',OU=CAM,OU=Exchange,OU=Server,DC=RED001,DC=local"', "" } | Set-Content serverlist.txt
powershell -command .\Get-HyperVMod.ps1 -file output.csv
私がヒットしている問題は、彼らがForEach-を行うことができますPowerShellとWin2k8サーバの古いバージョンを持っているので、私は(WIN2K3)からDSQUERYを行うことができますサーバーは、のForEach-Objectにはできないですオブジェクトはdsqueryを実行できません。
ここでは、サーバー名以外のすべてを解析して削除しようとしているdsquery出力のサンプルを示します。
"CN=SERVER001,OU=VUT,OU=Infastructure,OU=Server,DC=dcname,DC=local"
"CN=SERVER008,OU=ImagingWDS,DC=red002,DC=local"
出力は、別の方法またはファイルから余分なテキストを除去するだけで私の小さな問題でこれをやってどちらかに
SERVER001
SERVER008
任意の提案をする必要があります。
出力が引用符で囲まれている場合にのみ動作します。私は、バッチファイルからpowershellコマンドを呼び出すために行う必要があると仮定します。 'powershell -command" Get-Content dsquery2.txt |%{$ _ -place}(。*?)、。* '、' $ 2 '} "' ' – Edwin
@Edwin PowerShellを2つを混合するのではなく、人生ははるかに簡単だろう:-) –
私は正直なところ、PowerShellについて何も知らない。ベストを尽くそうとするだけで、私が知っているものでできる限り速くできます。私はPowershellで全部試してみるつもりだし、私はそれを2人で動かすことができないようだ。 – Edwin