Имам куп проблеми с изпълнението на команда на PowerShell. Всичко, което тя прави, е да изпълни команда, която се изпълнява в прозореца CMD prompt.
Ето я командата:
"C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe" PCNAME
Опитах следното без успех (опитах много повторения на това, за да се опитам да намеря работещ вариант. Синтаксисът вероятно е объркан):
$TEXT = $textbox.Text #$textbox is where the user enters the PC name.
$CMDCOMMAND = "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe"
Start-Process '"$CMDCOMMAND" $TEXT'
#iex -Command ('"C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe"' $TEXT)
Командата просто ще отвори прозореца за отдалечена връзка на SCCM към компютъра, който потребителят е посочил в текстовото поле.
Опитайте това:
& "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe" PCNAME
За PowerShell низ "..." е просто низ и PowerShell го оценява, като го изписва на екрана. За да накарате PowerShell да изпълни командата, чието име е в низ, използвате оператора за извикване &
.
За да стартирате или конвертирате пакетни файлове външно от PowerShell (особено ако желаете да подпишете всички скриптове за планирани задачи със сертификат), просто създавам скрипт на PowerShell, например deletefolders.ps1.
Въведете следното в скрипта:
cmd.exe /c "rd /s /q C:\#TEMP\test1"
cmd.exe /c "rd /s /q C:\#TEMP\test2"
cmd.exe /c "rd /s /q C:\#TEMP\test3"
*Всяка команда трябва да се постави на нов ред, като се извика отново cmd.exe.
Този скрипт вече може да бъде подписан и изпълнен от PowerShell, като извежда командите директно в командния ред / cmd
.
Това е много по-безопасен начин от стартирането на пакетни файлове!
Трябва да използвате командата Invoke-Command, за да стартирате тази външна програма. Обикновено тя работи без усилие.
Ако се нуждаете от повече от една команда, трябва да използвате командата Invoke-Expression с опцията -scriptblock
.