Трубопровод для замены отбрасывает все мои данные? - PullRequest
0 голосов
/ 23 февраля 2020

Я запускаю следующую команду, которая возвращает длинный список виртуальных машин:

$vms = Get-AzureRmVM -status | select name,@{ n='IP Address'; e={"IP removed"}}, @{ n='OsType';
e={$_.StorageProfile.OsDisk.OsType}}, powerState
$vms

Когда я отправляю на замену, буквально данных не остается ..

$vms = Get-AzureRmVM -status | select name,@{ n='IP Address'; e={"IP removed"}}, @{ n='OsType';
e={$_.StorageProfile.OsDisk.OsType}}, powerState | replace "VM Running", "poweredOn"
$vms

Я ничего не получаю обратно.

Ответы [ 3 ]

1 голос
/ 23 февраля 2020

Заменить - это команда windows для замены файлов. Это не то, что вы хотите. https://ss64.com/nt/replace.html

1 голос
/ 23 февраля 2020

Вам нужно изменить последнюю часть вашей строки Select-Object с

powerState | replace "VM Running", "poweredOn"

на:

@{Name = 'powerState'; Expression = { $_.powerState -replace "VM Running", "poweredOn"}}

Чтобы создать другое вычисляемое свойство.

0 голосов
/ 23 февраля 2020

Заменить не является оператором, командлетом, функцией, псевдонимом или исполняемой программой, как указал @Lee_Dailey. Существует оператор замены для замены на регулярное выражение и метод замены, чтобы сделать это без регулярного выражения. (Мне удивительно, что это даже не показало ошибку). Поэтому здесь нет замены на Regex, поэтому я рекомендую заменить методом замены:

$vms = Get-AzureRmVM -status | select-object name,@{ n='IP Address'; e={"IP removed"}}, @{ n='OsType';
e={$_.StorageProfile.OsDisk.OsType}}, @{n='powerState';e={$_.powerState.ToString().Replace("VM Running", "poweredOn")}}
$vms
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...