2017-08-29 33 views
0

これは、リモートのVM上のサービスを削除するためにinvokeコマンドを使用しています。PScredentialsオーバーロードエラー

私は、invokeコマンドでクレデンシャルを渡すためにPScredentialsを使用しています。

私のユーザーとパスワードをXMLファイルから取得しています。

1つのリモートVMだけでスクリプトを実行しても問題ありません。

イム(foreachループ付き)より、その後1つのリモートVM上でスクリプトを実行しようとすると、私はエラーを取得:

New-Object : Cannot find an overload for "PSCredential" and the argument 
count: "2". 
At line:17 char:15 
+ ... redential = New-Object System.Management.Automation.PSCredential($use 
... 
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidOperation: (:) [New-Object], 
MethodException 
+ FullyQualifiedErrorId : 
ConstructorInvokedThrowException,Microsoft 
.PowerShell.Commands.NewObjectCommand 

私は小さなスクリプトそのイム投稿に問題を隔離:

[xml]$xml = Get-Content "PUT Your Path Here" 
$vmList = $xml.configuration.vmList 



forEach ($vm in $vmList) { 

$vmUser = $vm.vm.vmUser 
$vmPass = $vm.vm.vmPass 



#Creating PScredentials 
$password = $vmPass | ConvertTo-SecureString -asPlainText -Force 
$username = $vmUser 
$credential = New-Object 
System.Management.Automation.PSCredential($username,$password) 

Echo $credential 

} 

XML:

<?xml version="1.0"?> 
<configuration> 
    <vCenterServerName>Server IP</vCenterServerName> 
    <vCenterUser>server user</vCenterUser> 
    <vCenterPass>Server pass</vCenterPass> 
    <localTempDirectory>Your Local Host</localTempDirectory> 
    <vmList> 
     <vm> 
      <vmName>VMname</vmName> 
      <vmIP>Put Server IP</vmIP> 
      <vmUser>User</vmUser> 
      <vmPass>pass</vmPass> 
      <vmTargetFolder>Put Your Path</vmTargetFolder> 
       </vm> 
     <vm> 
      <vmName>VMname</vmName> 
      <vmIP>Put Server IP</vmIP> 
      <vmUser>User</vmUser> 
      <vmPass>pass</vmPass> 
      <vmTargetFolder>Put Your Path</vmTargetFolder> 
       </vm> 
    </vmList> 
</configuration> 
+1

'$ password'や' $ username'をキャストするスクリプトの後の方がありますか?あなたが 'Remove-Variable password'と' Remove-Variable username'をループの中で定義する前に置くとどうなりますか? – BenH

+0

スクリプトの後半で別のinvokeコマンドに使用します... – Udi

答えて

0

アイブ氏はただ、将来的にそれを読み込む人のため...問題を発見問題はxmlファイルへの私のインデントでした。

私は正しい場所に電話しませんでした。