PowerShell で非常に簡単なスクリプトを作成しています。このスクリプトの目的は、txt ファイルからサーバー名のリストを読み取り、別の txt ファイルからコマンド ブロックを読み取ることです。操作の結果は、情報を含む 3 番目の txt ファイルになります。
ここにいくつかのコード:
cls
$usr = Read-Host "Please insert username, you'll be asked for password later"
$path = Read-Host "Insert a valid path for ServerList.txt file"
$serverList = Get-Content -Path $path | Out-String
$path = Read-Host "Insert a valid path fom Command.txt file"
$commandBlock = Get-Content -Path $path | Out-String
echo "Command: " $commandBlock "will be executed on " $serverList
echo "Press CTRL+Z to abort or"
pause
Invoke-Command -ComputerName $serverList -ScriptBlock { $commandBlock } -credential $usr
Serverlist.txt は「server1,server2,server3」などを含むプレーン テキストであり、command.txt はこの「Get-WmiObject Win32_BIOS | Select-Object SerialNumber」のみを含みます。
エラーが Invoke-Command である理由: 1 つ以上のコンピューター名が無効です。URI を渡す場合は、-ConnectionUri パラメーターを使用するか、文字列の代わりに URI オブジェクトを渡します。?
$serverlist を $serverlist.toString() に置き換えようとしましたが、うまくいきません。この場合、$serverlist は配列であるとどこかで読みましたが、すべてを機能させるにはどうすればよいですか?
https://technet.microsoft.com/en-us/library/hh849719.aspxコンソール経由で文字列を配置する場合、Invoke-Commands は「server1,server2,server3」形式で機能することを考慮してください。