powershell スクリプトファイルを别名で保存して署名する

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了powershell スクリプトファイルを别名で保存して署名する相关的知识,希望对你有一定的参考价值。

function Save-SignedScript {
    [CmdletBinding(DefaultParameterSetName='subject')]
    param(
        [parameter(Mandatory,ValueFromPipeline)]
        [string] $FilePath,
        [parameter(Mandatory,ParameterSetName='cert')]
        [System.Security.Cryptography.X509Certificates.X509Certificate2]
        $Certificate,
        [Parameter(Mandatory=$false,ParameterSetName='subject')]
        [string] $Subject
    )
    begin {
        if (! $Certificate)
        {
            if ($Subject)
            {
                $Temp = ls Cert:\CurrentUser\My\ -CodeSigningCert | ? Subject -Match $Subject
            }
            else
            {
                $Temp = ls Cert:\CurrentUser\My\ -CodeSigningCert
            }
            if (! $Temp)
            {
                Write-Warning 'コード署名用証明書が見つかりません'
                break
            }
            if ($Temp.GetType().Name -ne 'X509Certificate2')
            {
                Write-Host '  コード署名用の証明書を選択してください'
                Write-Host
                $Temp | ForEach-Object {
                    Write-Host "  $($Temp.IndexOf($_))) $($_.subject)"
                }
                Write-Host
                $Certificate = $Temp[$(Read-Host '番号')]
                if (! $Certificate)
                {
                    Write-Warning '不正な入力'
                    break
                }
            }
            else
            {
                $Certificate = $Temp
            }
        }
        if ($Certificate.Extensions.EnhancedKeyUsages.Value -notcontains '1.3.6.1.5.5.7.3.3') {
            # コード署名用ではなかったら
            Write-Warning "`n証明書の目的が「$($Certificate.Extensions.EnhancedKeyUsages.FriendlyName)」です`nコード署名用の証明書を指定してください"
            break
        }
        Write-Verbose $Certificate
    }
    process {
        if (Test-Path $FilePath)
        {
            Get-Item $FilePath | ForEach-Object {
                $SignedFileName = "$($_.BaseName).Signed$($_.Extension)"
                $_ | Copy-Item -Destination $SignedFileName
                $SignedFileName | Set-AuthenticodeSignature -Certificate $Certificate
            }
        }
        else
        {
            Write-Warning "No such file: $($FilePath)"
        }
    }
}

以上是关于powershell スクリプトファイルを别名で保存して署名する的主要内容,如果未能解决你的问题,请参考以下文章

vbscript 指定したファイルの全てのシートについてA1セルを有效にするスクリプト

sh unarコマンドですべてのファイルを解压缩するスクリプト。あと展开后のディレクトリから空白文字を置换する。

sh gitの歴史から巨大ファイルを见つけるスクリプトソース元:https://confluence.atlassian.com/bitbucket/maintaining-a-git-reposit

golang ファイル名に含まれる数字を0埋めしてリームするスクリプト(powershell,python,go)

ruby bowser search angularの结果を加工してファイルに保存する1行スクリプト。

sh 减价でファイルリスト一覧リンクを作るためのシェルスクリプト(到位桶用)