1

裏話

新しいユーザーのアカウントを作成した直後に Enable-Mailbox を呼び出すスクリプトがありますが、問題は、それを機能させるためにコマンドと共に管理者の資格情報を渡す必要があることです。このスクリプトは、毎日の管理タスクのプロセスを容易にするために GUI で作成されており、PowerShell について何も知らない人や、スクリプトがある場所にディレクトリを変更する方法さえ知らない人が使用します。このため、エクスプローラーでダブルクリックしたときに実行し、ユーザーに管理者の資格情報を一度要求するようにします。資格情報が入力されると、次のコードを使用して同じディレクトリ内のファイルに保存されます。

Try {
    $credsFile = Import-Clixml "credentials"
    $credsFile.Password = $credsFile.Password | ConvertTo-SecureString
    $adminCreds = New-Object System.Management.Automation.PsCredential($credsFile.Username, $credsFile.Password)
}
Catch {
    # This means the credentials file does not exist
    $adminCreds = Get-Credential
    $adminCreds = $adminCreds | Select-Object *
    $adminCreds.password = $adminCreds.Password | ConvertFrom-SecureString
    $adminCreds | Export-Clixml "credentials"
    $adminCreds.password = $adminCreds.Password | ConvertTo-SecureString
}

試み

Enable-Mailbox には渡すための -Credential パラメーターがないため、保存された資格情報を使用して最初から管理者としてスクリプトを実行する方法を見つけようとしています。昇格した状態でメイン スクリプトを呼び出そうとするスクリプトを作成しました。

最初に試したのは次のとおりです。

Start-Process -File "$PSHOME\powershell.exe" -ArgumentList "-NoExit","-Command Scripts\MainScript.ps1" -Credential $adminCreds -Wait

ただし、(毎回) 資格情報の入力を求めるだけで、スクリプトは読み込まれません。

次に試しました:

start-process powershell -verb runas -argument "scripts\MainConsole.ps1"

これにより、ISE 内から見つけたスクリプトが読み込まれますが、エクスプローラーでダブルクリックしても読み込まれません。

また、Invoke-Command と Invoke-Expression を調べて、Enable-Mailbox コマンドを管理者として実行しようとしましたが、成功しませんでした。スクリプトを最初から管理者として実行する方法、または少なくとも資格情報を Enable-Mailbox やその他のパラメーターに渡す方法を知っている人はいますか?

4

1 に答える 1