Могу ли я знать, почему строковый аргумент не печатается в следующем скрипте powershell?
function Get-Name ( [string] $Username ) { echo "user : $Username" } PS C:\> .\Get-Name.ps1 -username "test" PS C:\>
Файл сценария Get-Name.ps1 только определяет функцию Get-Name, она не выполняется.
Get-Name.ps1
Get-Name
Используйте оператор точечного источника (.), чтобы он определил функцию в области вызова, а затем вы можете выполнить саму функцию:
.
PS C:\> . .\Get-Name.ps1 PS C:\> Get-Name -Username test user : test
Либо удалите часть скрипта function Get-Name { и } , на что указывает Lee_Dailey , после чего файл скрипта сам по себе становится параметризованной функцией, и вы можете выполнить:
function Get-Name {
}
PS C:\> .\Get-Name.ps1 -Username test user : test
См. about_Scripts файл справки , особенно раздел о области действия сценария и точечного поиска
about_Scripts
проблема в том, что вы определяете функцию , а не вызываемый скрипт. [ ухмылка ] это будет работать ...
Param ([string] $Username) echo "user : $Username"
вот пример вызова выше ...
. .\Func_Get-Name.ps1 -username 'tutu'
вывод ...
user : tutu