придайте значение сценарию powershell

#powershell

Вопрос:

Я хочу использовать строку внутри сценария PowerShell. Он должен передаваться как переменная при выполнении такого сценария:

C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -c C:tempmyscript.ps1 "string"

Это хорошо работает всего с одним словом. Но моя строка выглядит так, и ее следует передать:

 **<UserInputs><UserInput Question="Gruppenname" Answer="amp;<Values Count=amp;quot;1amp;quot;amp;>amp;<Value DisplayName=amp;quot;Humanresourcesamp;quot; Id=amp;quot;af05c5d3-2312-c897-8439-08979d4d0a49amp;quot; /amp;>amp;</Valuesamp;>" Type="System.SupportingItem.PortalControl.InstancePicker" /><UserInput Question="Ausgabe" Answer="Namen" Type="richtext" /></UserInputs>**
 

Эта строка содержит несколько кавычек, и у меня возникли проблемы с введением ее в мой скрипт.

внутри сценария у меня есть это:

 $mystring = $Null if($args[0] -ne $Null) { $mystring = $args[0] } $result = $mystring | Select-String -Pattern "DisplayName=amp;quot;(.*?)amp;quot;" $result= $result.Matches.Groups[1] $group = $result.value Write-Output "$group" | Out-file C:tempgroup.txt
 

Ответ №1:

Сценарии PowerShell могут принимать параметры, которые становятся переменными, доступными только для остальной части сценария. Используйте это в верхней части вашего скрипта для настройки трех переменных, одного логического типа (true false), одного строкового типа и одного целочисленного типа.

 #stack.ps1
param(
         # Param1 help description
         [Parameter(Mandatory=$true,
                    ValueFromPipelineByPropertyName=$true,
                    Position=0)]
         [string]$MyString="MyDefaultValue",
 
         [int]$MyIntInput,

         [bool]$MyTrueFalseInput
         
)

"Script running!"
"Values recieved!"

"MyString = $MyString"
"MyIntInput = $MyIntInput"
"MyTrueFalse = $MyTrueFalseInput"
 

Затем передать значения

 C:temp> .stack.ps1 -MyString Ham -MyIntInput 75 -MyTrueFalseInput $true
Script running!
Values recieved!
MyString = Ham
MyIntInput = 75
MyTrueFalse = True
 

Как работать с нечетными или сложными строками

Теперь, чтобы передать сложную строку, содержащую кавычки, используйте этот синтаксис:

 #using single quotes as a delimiter, ignoring the doubles inside.
$myWeirdString = 'ThisIs"SomeString"WhichHasQuotes"WhichIsWeird' 

## extra case, if it's really odd and has both quote types
$myWeirdString = @"
'ThisIs"SomeString"WhichHasQuotes"WhichIsWeird' 
"@
 

Комментарии:

1. ' это АПОСТРОФ. " это КАВЫЧКА. Нам будет лучше, когда мы перестанем использовать single и double называть их. unicode.org/charts/PDF/U0000.pdf