Hallo Frank,
habs getestet - so sollte das gewünschte Ergebnis rauskommen.
[string]$Global = ''
function TestRefFunction([ref]$Param)
{
[string]$Param.Value = '5'
$Param | Out-Default
}
TestRefFunction([ref]$Global)
$Global | Out-Default
Kleiner Tipp noch am Rande - Powershell ISE - STRG+J -> Commandlet erweitert.
Da kriegst du folgendes Konstrukt, was etwas mehr Möglichkeiten bei den Parametern gibt und imho auch übersichtlicher ist.
<#
.Synopsis
Kurzbeschreibung
.DESCRIPTION
Lange Beschreibung
.EXAMPLE
Beispiel für die Verwendung dieses Cmdlets
.EXAMPLE
Ein weiteres Beispiel für die Verwendung dieses Cmdlets
.INPUTS
Eingaben in dieses Cmdlet (falls vorhanden)
.OUTPUTS
Ausgabe dieses Cmdlets (falls vorhanden)
.NOTES
Allgemeine Hinweise
.COMPONENT
Die Komponente, zu der dieses Cmdlet gehört
.ROLE
Die Rolle, zu der dieses Cmdlet gehört
.FUNCTIONALITY
Die Funktionalität, die dieses Cmdlet am besten beschreibt
#>
function Verb-Noun
{
[CmdletBinding(DefaultParameterSetName='Parameter Set 1',
SupportsShouldProcess=$true,
PositionalBinding=$false,
HelpUri = 'http://www.microsoft.com/',
ConfirmImpact='Medium')]
[Alias()]
[OutputType([String])]
Param
(
# Hilfebeschreibung zu Param1
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false,
Position=0,
ParameterSetName='Parameter Set 1')]
[ValidateNotNull()]
[ValidateNotNullOrEmpty()]
[ValidateCount(0,5)]
[ValidateSet("sun", "moon", "earth")]
[Alias("p1")]
$Param1,
# Hilfebeschreibung zu Param2
[Parameter(ParameterSetName='Parameter Set 1')]
[AllowNull()]
[AllowEmptyCollection()]
[AllowEmptyString()]
[ValidateScript({$true})]
[ValidateRange(0,5)]
[int]
$Param2,
# Hilfebeschreibung zu Param3
[Parameter(ParameterSetName='Another Parameter Set')]
[ValidatePattern("[a-z]*")]
[ValidateLength(0,15)]
[String]
$Param3
)
Begin
{
}
Process
{
if ($pscmdlet.ShouldProcess("Target", "Operation"))
{
}
}
End
{
}
}
Greetings,
David das Neves
Technology Specialist - Consulting Services
Computacenter AG & Co. oHG - München
Blog
Caution: This post may contain errors.