2011-07-13 17 views
2

私のPowerShellスクリプトでは、コマンドレットを呼び出しています(「Connect-Database」と言う)。コマンドレットに追加のパラメータが必要な場合は、ユーザーにこれらの値を入力するように指示します(たとえば、「Connect-Database」はレジストリから資格情報を取得できないため、Powershellコンソールで「Username」「パスワード」を要求し、値)。Powershell - Powershellスクリプトで非対話形式でcmdletを呼び出す方法は?

Powershellコマンドレットのコードを調べました。 "CommandInvocationIntrinsics"を使用して、 "NewScriptBlock"を使用して "CommandInvocationIntrinsics"の "Invoke"メソッドを使用してユーザーを確認することがわかりました。

Powershellスクリプトからこのコマンドレットを呼び出しているので、そのようなプロンプトが表示されたときはいつでも、抑制され、例外がスローされます。

コードは、このようなものである - それを行うの

try 
{ 
    $db = Connect-Database <databasename> 
    #if username/password is prompted, it should be converted into error. But it should not be shown in powershell console. 

    if($Error.Count > 0) 
    { 
     throw $Error[0] 
    } 
} 
catch 
{ 
    #do something 
} 

答えて

1

私の方法、必須パラメータを列挙する最初で、その後、$ nullにVARSでそれらを初期化します。したがって、それ以上のやり取りはなく、エラーがスローされます。

0

簡単な解決法、プロンプトを表示しないでください。私は、(必須のパラメータを使用して)常にプロンプ​​トを表示するか、コマンドの実行中にプロンプ​​トを表示しないでください。十分な情報がない場合は、エラーを投げます。対話形式でコマンドを使用している場合、ユーザーは正しい情報で再実行できます。

関連する問題