私は検索しましたが、何の答えも見つかりませんでした。
タスクは、powershell ps1を使用して1つのDLLを登録し、その後に他のスクリプト行を続けます。私はダイアログで中断したくないので、/s
パラメータを追加しました。しかし、成功しても失敗しても結果情報は無視されます。 結果をコンソールに表示します。しかしどうですか? Start-Process -PassThru
とPowershellがダイアログの代わりにコンソールにRegsvr32結果を表示する
0
A
答えて
1
起動regsvr32.exe /s
とExitCode
プロパティを調べる:ここ
$regsvrp = Start-Process regsvr32.exe -ArgumentList "/s C:\path\to\your.dll" -PassThru
$regsvrp.WaitForExit(5000) # Wait (up to) 5 seconds
if($regsvrp.ExitCode -ne 0)
{
Write-Warning "regsvr32 exited with error $($regsvrp.ExitCode)"
}
1
は、パイプラインをサポートして、より完全なフルPowerShellコマンドレットです。
function Register-Dll
{
<#
.SYNOPSIS
A function that uses the utility regsvr32.exe utility to register a file
.PARAMETER Path
The file path
.PARAMETER Unregister
when specified, unregisters instead of registers
#>
[CmdletBinding()]
param (
[ValidateScript({ Test-Path -Path $_ -PathType 'Leaf' })]
[Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipeLineByPropertyName=$true)]
[Alias("FullName")]
[string[]]$Path,
[Alias("u")]
[switch]$Unregister
)
begin {
if ($Unregister)
{
$regflag = "-u "
}
else
{
$regflag = ""
}
[int]$NumFailed=0
$RegExitCodes = @{
0="SUCCESS";
1="FAIL_ARGS - Invalid Argument";
2="FAIL_OLE - OleInitialize Failed";
3="FAIL_LOAD - LoadLibrary Failed";
4="FAIL_ENTRY - GetProcAddress failed";
5="FAIL_REG - DllRegisterServer or DllUnregisterServer failed.";
}
}
process {
foreach ($p in $path)
{
try
{
$regsvrp = Start-Process regsvr32.exe -ArgumentList "/s $regflag <code>$p</code>" -Wait -NoNewWindow -PassThru
if($regsvrp.ExitCode -ne 0)
{
$NumFailed++
Write-Error "regsvr32 $regflag for $p exited with error $($regsvrp.ExitCode) - $($RegExitCodes[$regsvrp.ExitCode])"
}
} catch {
$NumFailed++
Write-Error $_.Exception.Message
}
}
}
end {
if ($NumFailed -gt 0)
{
if ($Unregister)
{
$mode = "unregister"
}
else
{
$mode = "register"
}
Write-Error "Failed to $mode $NumFailed dll's, see previous errors for detail"
}
}
}
使用法:
function Register-MyAppDll
{
param(
[Parameter(Mandatory=$true,ParameterSetName="Both")]
[switch]$ReRegister,
[Parameter(Mandatory=$true,ParameterSetName="UnregisterOnly")]
[Alias("u")]
[switch]$UnRegister,
[Parameter(Mandatory=$true,ParameterSetName="RegisterOnly")]
[Alias("r")]
[switch]$Register
)
$RegOptions = @()
if ($UnRegister -or $ReRegister) { $RegOptions += @{Unregister=$true} }
if ($Register -or $ReRegister) { $RegOptions += @{} }
$dlltoregister = Get-ChildItem "C:\MyApp\bin" -Filter *.dll | where {$_ -notmatch '^interop'}
foreach ($RegOpt in $RegOptions)
{
$dlltoregister | Register-Dll @RegOpt
}
}
Register-MyAppDll -UnRegister
Register-MyAppDll -Register
Register-MyAppDll -ReRegister
が:)
関連する問題
- 1. Powershell:結果に@ {}の代わりに値を表示する
- 2. PowerShell:結果の代わりに正規表現を出力
- 3. 結果を表示する代わりにShouldAssertExceptionをスローする
- 4. OrchardCMSの代わりに、代わりにHTMLタグを表示するクエリ結果の置換トークン
- 5. AngularJS:{{式}}が結果の代わりに{{式}}として表示されます
- 6. データグリッドで表示する代わりにデータベースクエリ結果を使用する
- 7. MYSQLは結果を表示する代わりに行を数えます
- 8. PHP:2つの異なる結果の代わりに同じ結果を2回表示するforループ?
- 9. Mongoid ::代わりに、結果の基準
- 10. コンソールでエスプレッソのテスト結果を表示
- 11. アクティビティインスタンスの代わりにコンテキストを使用してダイアログを表示する
- 12. djangoのpythonコンソールで結果を表示するには
- 13. primalformsダイアログボックスの結果がpowershellに表示される
- 14. Webブラウザに結果を表示する代わりに、テキストファイルを作成して結果を表示することはできますか?
- 15. チームエクスプローラ2008:クエリを実行すると結果リストの代わりに特定のワークアイテムが表示される
- 16. Jqueryダイアログを閉じる代わりに
- 17. eclipse - ツリービューの代わりにリストに結果を表示する検索ビューを設定する方法
- 18. 空の結果が0の代わりに-1としてカウントを表示する
- 19. ドメインの代わりにGoogleの検索結果にサーバーのIPアドレスが表示される
- 20. Prolog - アルゴリズムで印刷する代わりに結果を返す
- 21. Powershell。どのように結果を表に表示するのですか?
- 22. SET変数の文字列の代わりにCMDの結果を表示するには
- 23. コンボボックスの代わりにイメージを表示
- 24. いくつかのダイアログの代わりに1つのダイアログでオブジェクトの配列を表示する
- 25. Codeigniter - 行の代わりに列としてデータベースの結果を垂直に表示する方法
- 26. ダイアログの代わりにアンドロイドのカスタムポップアップアクティビティ
- 27. オブジェクトの代わりにsqlalchemyの結果を出力します
- 28. 確認ダイアログでOKの代わりにはい/いいえを表示
- 29. SQLAlchemy with Postgres:結果の代わりにJSONElementを返すプロパティ
- 30. Rubyコンソールの代わりにIRB(Windows)
をお楽しみおかげで、私が試みたが、エラーコードが異なるようで、ダイアログでそれは0x80070005とだ、コンソールでは、それは5なぜですか? –
'0x80070005'と' 5' *は*同じエラーコード( 'ACCESS_DENIED')です –