次のサンプル署名付きPowerShellスクリプトを参照して、Run Remote Custom Script 対応処理を行ってください。
サンプルスクリプトの形式に従って、出力エンコーディングやスクリプトパラメータの取得に関する問題を避けてください。
# ディレクトリ構造は以下の通りです: # C:\example\ # |----your_signed_script.ps1 # |----tm_script_parameter.txt # PowerShellを起動するためのコマンドライン例: # PowerShell.exe -ExecutionPolicy RemoteSigned -File "C:\example\your_signed_script.ps1" "C:\example\tm_script_parameter.txt" # スクリプトパラメータを処理するために署名されたスクリプトのシンプルなフォーマットに従ってください: # utf8エンコーディングを使用: $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [Text.UTF8Encoding]::UTF8 # $args[0]から生のパラメータ文字列を読み取る: $ArgString = Get-Content -Path $args[0] -Encoding UTF8 # 生の文字列を分割: $InputArgs = $ArgString -split '\s+(?=(?:[^"]*"[^"]*")*[^"]*$)' | Where-Object { $_ -ne '' } | ForEach-Object { $_.Trim('"') } function EntryPoint { ##################################################### # スクリプトの内容はEntryPoint関数に記述します。 # 関数パラメータを指定: [CmdletBinding()] param ( [Parameter()][string]$Id, [Parameter()][string]$Name ) Write-Host "ID: $Id, Name: $Name" ##################################################### } # パラメータ文字列配列をParams変数に変更: $NamedParams = @{} $PositionalParams = @() for ($i = 0; $i -lt $InputArgs.Length; $i++) { $Arg = $InputArgs[$i] if ($Arg.StartsWith("-")) { # 名前付きパラメータを見つける: $ParamName = $Arg $ParamValue = $InputArgs[$i + 1] $NamedParams[$ParamName] = $ParamValue $i++ } else { # 位置指定パラメータを見つける: $PositionalParams += $Arg } } # Params変数を使用してEntryPoint関数を呼び出す: EntryPoint @NamedParams @PositionalParams