Ich schreibe ein PowerShell-Skript, das 2 Parameter - Computername oder Seriennummer - und einige Informationen über den entsprechenden Computer ausgeben kann. Wenn ich jedoch einen Wert aus der Pipeline übergebe, geht es immer in den falschen Parameter.PowerShell-Pipeline-Eingabe wird zum falschen Parameter
Hier ist mein Code:
Param
(
[Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$True)]
[String]$ComputerName,
[Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$True)]
[String]$SerialNumber
)
Dann verwendet sie diese Werte Informationen aus SCCM zu ziehen.
Wenn ich jedoch die folgende Zeile verwenden das Skript aufrufen:
"<ComputerName>" | .\Get-SerialNumber.ps1 -ComputerName $_
Der Computername wird der Serial Parameter setzen in anstelle des Computername-Parameter.
Wenn ich in
setzen"<SerialNumber>" | .\Get-SerialNumber.ps1 -SerialNumber $_
Der Wert wird in den Computername-Parameter übergeben. Was geht hier vor sich? Warum werden sie zurückgereicht?
Wenn ich in
Typ.\Get-SerialNumber.ps1 -SerialNumber "<SerialNumber>"
oder
.\Get-SerialNumber.ps1 -ComptuerName "<ComputerName>"
es funktioniert gut. Es verschraubt nur, wenn Werte durch die Pipeline geleitet werden.
Zur Erinnerung, ich habe versucht, meine PowerShell-Sitzung neu zu starten, um sicherzustellen, dass in meiner Sitzung nicht etwas Seltsames passiert und ich sogar auf einem anderen Computer versucht habe. Es passiert immer noch auf die gleiche Weise.
@briantist Dies ist KEIN Duplikat der Frage, die verlinkt wurde. Ich habe mir nur diese Frage/Antwort angesehen, meine Frage wurde nicht als Teil davon beantwortet. Diese Frage zeigt auf einer sehr grundlegenden Ebene, was die Pipeline tut, dies war ein fortgeschrittenes Niveau der Pipeline-Nutzung. – Randy
Ich stimme nicht zu; Ihre Frage zeigte ein Missverständnis der grundlegenden Pipelineverwendung, die das verknüpfte Duplikat bietet. Sie haben versucht, etwas Ungültiges zu tun, keine fortgeschrittene Verwendung. – briantist
@briantist ja, es war ein Missverständnis, das ist ein großer Teil dessen, wofür diese Seite ist. Mein Missverständnis ist jedoch in keiner Weise in dem angegebenen Link beschrieben. Nach dem Lesen dieser Frage und ihrer Antworten hätte ich nicht mehr verstanden, was ich zu tun versuchte. Die Kommentare auf der Antwort unten DID, auf der anderen Seite, helfen mit meinem Verständnis dieses spezifischen Konzepts und gaben mir eine tatsächliche Antwort auf meine Frage. – Randy