Задать вопрос
  • [PowerShell] Как отправить СМС в кириллице через GSM модем?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Прочитайте про PDU формат СМС.
    При передаче латиницей, в АТ команду Вы вводите текст.
    При передаче кириллицей, необходимо произвести перекодировку всех символов сообщения по хитрому алгоритму.
    Не забудьте потом в АТ команде переключить формат передачи текс/PDU
    Ответ написан
    Комментировать
  • [PowerShell] Как отправить СМС в кириллице через GSM модем?

    @MaxKozlov Куратор тега PowerShell
    С модемами и СМС не работал, но
    попробовать поэкспериментировать с перекодированием сообщения перед отправкой можно с помощью таких функций

    function Get-TextEncoding ($Encoding) {
    		switch -regex ($Encoding) {
    			'default' {
    				[System.Text.Encoding]::Default
    			}
    			'utf8' {
    				[System.Text.Encoding]::UTF8
    			}
    			'oem' {
    				[System.Text.Encoding]::GetEncoding(
    					(Get-Culture).TextInfo.OEMCodePage
    				)
    			}
    			'ansi' {
    				[System.Text.Encoding]::GetEncoding(
    					(Get-Culture).TextInfo.ANSICodePage
    				)
    			}
    			'^\d+$' {
    				[System.Text.Encoding]::GetEncoding([int]$Encoding)
    			}
    			default {
    				[System.Text.Encoding]::GetEncoding($Encoding)
    			}
    		}
    }
    function Convert-TextEncoding {
    param (
    	[Parameter(ValueFromPipeline=$true,Position=0)]
    	[String[]]$InputObject,
    	[Parameter(Mandatory=$true,Position=1)]
    	[string]$FromEncoding,
    	[Parameter(Mandatory=$true,Position=2)]
    	[string]$ToEncoding
    )
    BEGIN {
    	try {
    		$FE = Get-TextEncoding $FromEncoding
    		$TE = Get-TextEncoding $ToEncoding
    	}
    	catch {
    		throw
    	}
    }
    PROCESS{
    	foreach ($s in $InputObject) {
    		if ($s) {
    			$TE.GetString($FE.GetBytes($s))
    		}
    		else {
    			$s
    		}
    	}
    }
    }
    # Например, читабельный вывод из удалённо выполняемых консольных приложений я получаю так:
    # Invoke-Command -ComputerName remoteComp { dism /online } | Convert-TextEncoding -FromEncoding 1251 -ToEncoding 866
    Ответ написан
    Комментировать