2014-09-22 2 views
0

У меня возникли трудности с передачей параметров блоку сценария в powershell.Проблемы с передачей параметров скриптблоку

$delScript={del C:\DateResults\* $args[0] $args[1] } 
    $result0 = Invoke-Command -ComputerName $targetServer.TrimStart("\\") -Credential $credentials -ScriptBlock $delScript -ArgumentList @("/q" , "/s") 

Я начинаю терять сюжет, пытаясь угодить синтаксическому адскому оружию и его блок сценария. Я исследовал эту проблему до смерти, и я даже не могу заставить эту основную проблему работать. Я надеялся, что потратив большую часть 4 часов на эту проблему, кто-то из меня может помочь мне.

Заранее благодарен!

+1

'del' - это псевдоним для' Remove-Item'. Из того, что я вижу ['Remove-Item'] (http://technet.microsoft.com/en-us/library/hh849765.aspx), принимается только один позиционный аргумент, который является' -Path'. Вы, предположительно, пропустите 3. Что вы пытаетесь передать в блок сценариев? – Matt

+0

Я просто хочу передать некоторые ключи в команду del, вот и все. Наверное, мое наивное мышление - это командная команда. Простите невежество. – IbrarMumtaz

ответ

2

Вы имеете проблему, поскольку вы пытаетесь запустить старую дос прикажи PowerShell создан псевдоним для того чтобы помочь облегчить вам в PowerShell. Как упоминалось в комментарии del является псевдонимом для Remove-Item. Remove-Item принимает только один позиционный аргумент, который равен -Path. Чтобы ваш скрипт работать как вы просто должны быть в состоянии изменить ваш $delScript к этому

$delScript={cmd.exe /C del C:\DateResults\* $args[0] $args[1] } 

Что бы запустить свой код так, как можно было бы ожидать. В то время как я печатал это вы уже поняли, лучший подход, который заключается в использовании родной Remove-Item и удалить ваш -ArgumentList из Invoke-Command

$delScript={Remove-Item C:\DateResults\* -Recurse -Force} 

Я также рекомендую вам проверить Get-Alias, чтобы видеть, так что вы не получите, оказавшихся еще раз.

+0

Спасибо, ваш первый комментарий выше, это то, что вызвало все, и все стало иметь смысл. – IbrarMumtaz

0

Извините, это было до моего собственного невежества и глупости. Нависание над «дель» в PowerGUI должно было сказать мне все, что мне нужно было знать.

Ниже все, что мне нужно, в конце.

$delScript={del C:\DateResults\* -Recurse -Force } 
$result0 = Invoke-Command -ComputerName $targetServer.TrimStart("\\") -Credential $credentials -ScriptBlock $delScript 
+0

Было бы хорошо в PS, если бы ошибки рассказывали мне больше о том, почему у меня была проблема, с которой я столкнулся, вводя в заблуждение меня, думая, что это просто проблема синтаксиса. Это то, что в конечном итоге стоило мне много времени. – IbrarMumtaz

+0

Когда я выполняю ваш скрипт, я получаю сообщение об ошибке «Удалить-элемент: не может быть найден позиционный параметр, который принимает аргумент '/ q''. Не уверен, насколько полезнее PowerShell в этом случае. :-) –

Смежные вопросы