2017-08-24 2 views
1
arbeiten

Ich versuche, Benutzername und Passwort als params zu einem Powershell-Skript zu akzeptieren, aber das neue ObjektNeues Objekt PSCredential nicht

$UserID="Name" 
$SecurePassword=convertto-securestring -AsPlainText -Force -String $Password 
New-object –TypeName System.Management.Automation.PSCredential –ArgumentList ($UserID,$SecurePassword) 

gibt einen Fehler

New-Objekt: nicht gefunden type ['TypeName System.Management.Automation.PSCredential' ArgumentList]: vergewissern Sie sich, dass die Assembly mit diesem Typ geladen ist. Bei C: \ ps \ login.ps1: 14 char: 17 + ... rCredential = Neues Objekt - TypeName System.Management.Automation.PSCre ... + ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId: TypeNotFound, Microsoft.PowerShell.Commands.NewObjectCommand

Hat jemand einige Hinweise, wie diese zu lösen?

+2

Die '-' vor' ArgumentList' ist kein Bindestrich , aber ein EN-Bindestrich (U + 2013), ersetze es durch einen Bindestrich ('-') –

Antwort

5

Die vor den TypeName und ArgumentList Parameter sind keine Bindestriche, sondern EN Bindestriche (U + 2013), und dies den Parser stellt auf. Ersetzen sie durch einen Bindestrich (-):

'New-object –TypeName System.Management.Automation.PSCredential –ArgumentList ($UserID,$SecurePassword)' -replace '\p{Pd}','-' 

\p{Pd} ist die Unicode-Klasse für "P unctuation, d Asche"

+0

Ja, Notepad ++ speicherte als UTF-8 Danke –