Tôi đang kéo tóc ra khỏi đây, vì tôi dường như không thể làm được điều này, và tôi không thể tìm ra cách để google vấn đề này. Tôi đang chạy Powershell 2.0. Đây là kịch bản của tôi:Lệnh gọi của Powershell sẽ không đưa vào biến cho tham số -ComputerName?
$computer_names = "server1,server2"
Write-Output "Invoke-Command -ComputerName $computer_names -ScriptBlock {
Get-WmiObject -Class Win32_LogicalDisk |
sort deviceid |
Format-Table -AutoSize deviceid, freespace
}"
Invoke-Command -ComputerName $computer_names -ScriptBlock {
Get-WmiObject -Class Win32_LogicalDisk |
sort deviceid |
Format-Table -AutoSize deviceid, freespace
}
Lệnh cuối cùng cung cấp cho các lỗi:
Invoke-Command : One or more computer names is not valid. If you are trying to
pass a Uri, use the -ConnectionUri parameter or pass Uri objects instead of
strings.
Nhưng khi tôi sao chép đầu ra của lệnh Write-Output để vỏ và chạy đó, nó hoạt động tốt. Làm thế nào tôi có thể bỏ biến chuỗi vào thứ mà Invoke-Command sẽ chấp nhận? Cảm ơn trước!
Điều đó đã làm điều đó, cảm ơn! Tôi không nghĩ chỉ cần chạy một cái cho nó. Đó là viết tắt tôi đã không nhìn thấy. Tuy nhiên, tôi đã tránh tuyên bố một mảng vì tôi không nghĩ rằng Invoke-Command -ComputerName mất một - thay vào đó, phải mất một danh sách các tên máy tính được phân cách bởi một dấu phẩy, không có dấu cách. Liệu tôi có sai? – erictheavg
Trả lời cho chính tôi: có vẻ như vậy. Tôi chỉ đọc trợ giúp về lệnh đó và nó nói nó mong đợi một chuỗi []. Tôi đã đi ra khỏi các ví dụ một mình và thực hiện một giả định xấu. – erictheavg