Я проверил немало других вопросов здесь, но не смог найти то, что мне нужно. В настоящее время я пытаюсь автоматизировать процесс определения виртуальных машин и серверов Hyper V. Вот мой текущий сценарий.
@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
Проблема, с которой я столкнулся, состоит в том, что серверы, с которых я могу выполнить dsquery (Win2k3), не могут выполнить ForEach-Object, потому что у них есть более старая версия Powershell, а серверы Win2k8, которые могут выполнять ForEach-Object, не могут сделать запрос.
Вот пример вывода dsquery, который я пытаюсь проанализировать и удалить все, кроме имени сервера.
"CN=SERVER001,OU=VUT,OU=Infastructure,OU=Server,DC=dcname,DC=local"
"CN=SERVER008,OU=ImagingWDS,DC=red002,DC=local"
Вывод должен быть
SERVER001
SERVER008
Любые предложения о том, чтобы сделать это другим способом, или просто моя маленькая проблема удаления лишнего текста из файла.