#powershell #remote-access #invoke-command
#powershell #удаленный доступ #вызов-команда
Вопрос:
Когда я использую Invoke-command в Powershell, Select-object выдает ошибку в программе.
$pc='server1','server2'
$csv = "\mypcc$UsersmeDesktopScriptPC2Length.csv"
$command=Get-ChildItem -Path C:Users -Exclude C:Users*AppData -Recurse -Force -File |
where Length -gt 300mb | Sort-Object -Property Length -descending |
Out-String -stream | Select-Object -Property $pc,Directory,Name,$properties |
Export-Csv -Path $csv -Delimiter ';' -Encoding UTF8 -NoTypeInformation
Invoke-Command -Computername $pc -ScriptBlock {$command}
Вот код ошибки :
Select-Object : Impossible de convertir System.Object[] dans l’un des types suivants {System.String, System.Management.Automation.ScriptBlock}.
Au caractère C:UsersmeDesktopScriptScanPC.ps1:40 : 22
... ng -stream | Select-Object -Property $pc,Directory,Name,$properties |
Комментарии:
1.
$command = { ... }; ... Invoke-Command -ScriptBlock $command
. Вам понадобятся дополнительные$using
ссылки для передачи удаленных переменных таким образом.2. Хотя в этом коде есть и другие недостатки, позвольте мне начать с того, что
Select-Object -Property $pc,Directory,Name,$properties
сначала следует исправить эту строку.$pc
является массивом, а не именем свойства. Кроме того, вы не определили, что$properties
такое переменная. If$properties
— это строка, содержащая имя свойства, это единственный способ, которым, я думаю, ваш код будет иметь смысл.
Ответ №1:
Наконец я нашел свою ошибку, моя переменная не была объявлена в «Invoke-Command».
Однако, когда я запускаю команду на удаленном сервере с помощью Invoke-Command, я получаю эту ошибку на нескольких серверах :
Impossible de trouver un paramètre correspondant au nom « File ».
CategoryInfo : InvalidArgument : (:) [Get-ChildItem], ParameterBindingException
FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
PSComputerName : Server1
Команда, которую я отправляю, :
Get-ChildItem -Path C:Users -Recurse -Force -File |
Sort-Object -Property Length -descending |
Select-Object -Property Directory,Name,$properties |
Export-Csv -Path \Server2c$scriptLogERfile.csv -Delimiter ';' -Encoding UTF8 -
NoTypeInformation
Когда я запускаю команду Get-Child item в Server2 и сохраняю вывод в файл Server2, он работает, но с Server1 на Server2 не работает