#powershell #hashtable
Вопрос:
#Should execute this: invoke-some -Name "name" -Firstname "Firstname" -Emptyargument
#NOT works: invoke-some -Name "name" -Firstname "Firstname" -Emptyargument $true
#works: invoke-some -Name "name" -Firstname "Firstname" -Emptyargument:$true
$cmd="invoke-something"
$arguments = @{Name="name";Firstname="firstname";emptyargument=$true;
$result=amp; $cmdlet @arguments 2>amp;1
Так как же я могу пройти -Emptyargument
без какой-либо ценности. Насколько мне известно, хэш-таблица не может иметь пустое значение.
Кто-нибудь знает обходной путь? Я не могу изменить всю архитектуру для этого крайнего случая.
Комментарии:
1. Вот как вы должны передавать параметр switch при разбрызгивании. Ваша идея верна, но ваше исполнение неверно. У вас нет кронштейна рядом с вашим
$arguments
. Удалите последний полустолбец, так как он не служит никаким целям, и добавьте скобку рядом, чтобы у вас была$arguments = @{...}
ссылка: о разбрызгивании2. о, это опечатка. в моем реальном коде есть закрывающая скобка. но ошибка «вызвать что-то» заключается в том, что существует значение для флага-emptyargument. если я определю emptyargument=»» в хэш-таблице, это тоже приведет к сбою
3. @insane_IT можете ли вы предоставить дополнительную информацию? Случай, когда это работает, случай, когда это не работает, а также ошибка? В принципе, при использовании разделения вы передаете параметры командлету. Если этот командлет имеет обязательные параметры, то вы должны что-то передать, это не имеет никакого отношения к оператору вызова . Как я уже сказал, укажите ошибку, если это возможно.
4. я выяснил, что хэш-лист-это не проблема. у меня есть php-скрипт, который передает параметр в скрипт powershell. таким образом, команда не будет выполнена успешно. если я вызову сценарий ps с точно таким же параметром, он будет работать (распечатка параметров в сценарии ps не показывает разницы в обоих направлениях). поэтому я думаю, что тема угрозы не подходит для решения этой проблемы.
5. я просто перезагрузился без каких-либо дальнейших изменений, решив проблему. компьютеры иногда бывают странными. в любом случае: спасибо за помощь