PowerShellコマンドを実行する際に、たくさんの問題が発生しています。実行しているのは、CMDプロンプトウィンドウで実行されるコマンドを実行することだけです。
これがコマンドです:
"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からコマンドPrompt/cmd
に直接コマンドを出力して実行できます。
バッチファイルを実行するよりもはるかに安全な方法です。
1つの解決策は、PowerShellからCMDへのコマンドのパイプ接続です。次のコマンドを実行するとnotepad.exe
コマンドがCMDにパイプされ、それによってメモ帳アプリケーションが開きます。
PS C:\> "notepad.exe" | cmd
コマンドがCMDで実行されると、PowerShellプロンプトに戻り、PowerShellスクリプトを引き続き実行できます。
mklement が指摘するように、このメソッドはCMDの起動メッセージを表示します。上記の方法で他の端末に出力をコピーしようとすると、起動メッセージも一緒にコピーされます。
この外部プログラムを起動するには、Invoke-Commandコマンドレットを使用する必要があります。通常それは努力なしで動作します。
複数のコマンドが必要な場合は、Invoke-Expressionコマンドレットを-scriptblock
オプションと共に使用する必要があります。
この情報が必要な人のために:
私はあなたがPSスクリプトからあなたのPATH
にあるコマンドをほとんど実行できることを考え出しました、そしてそれはうまくいくはずです。
cmd.exe /c
を使ってこのコマンドを起動する必要があるかもしれません。
PSスクリプトからgitを呼び出す
私はgit
に包まれたChocolatey
クライアントを再パッケージしなければなりませんでした(知らないかもしれない人にとっては、これはWindows用の一種のアプリストアです)。
git
がPATH
に入ったら、次のようなコマンドが見つかりました。
$ca_bundle = git config --get http.sslCAInfo
git
crt
ファイルの場所を$ca_bundle
変数に格納します。
アプリを探す
現在のSO postと this SO post を組み合わせた別の例は、where
コマンドの使用です。
$Java_exe = cmd.exe /c where Java
Java.exe
ファイルの場所を$Java_exe
変数に格納します。