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>
'$ password'や' $ username'をキャストするスクリプトの後の方がありますか?あなたが 'Remove-Variable password'と' Remove-Variable username'をループの中で定義する前に置くとどうなりますか? – BenH
スクリプトの後半で別のinvokeコマンドに使用します... – Udi