SHIMSOFT-Fundamentals.psm1
function Get-PropertyNames { <# .SYNOPSIS オブジェクト配列からプロパティ名を取得します。 .DESCRIPTION オブジェクト配列からプロパティ名を取得します。 構成要素の異なるオブジェクトの配列から、すべてのプロパティ名を取得します。 .EXAMPLE Get-PropertyName -Array $Array .EXAMPLE Get-PropertyName -Array $Array .EXAMPLE $Array | Get-PropertyName .EXAMPLE $Array | ft -Property (Get-PropertyName -Array $Array) .PARAMETER Array オブジェクト配列を指定してください。 .LINK .NOTES .INPUTS パイプラインからの入力可能です。 .OUTPUTS 文字列 #> [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification="Always multiple results.")] param( [Parameter(Mandatory=$false,Position=1,ValueFromPipeLine=$True)] [Array]$Array ) $PropertyNames = @() foreach ($A in $Array) { $PropertyNames += ($A | Get-Member -MemberType Properties).Name } ($PropertyNames | Sort-Object -Unique) } function Get-MSProductLifeCycle { <# .SYNOPSIS マイクロソフト社製品の製品名からライフサイクル情報を確認します。 .DESCRIPTION マイクロソフト社製品の製品名からライフサイクル情報を確認します。 https://support.microsoft.com/api/lifecycle インターネットに接続できない環境の場合は利用できません。 .EXAMPLE Get-MSProductLifeCycle -Product "Exchange Server 2010" .PARAMETER Product マイクロソフト製品名を指定します。半角スペースを含む場合は "Windows Server" のように指定します。 .LINK .NOTES https://support.microsoft.com/api/lifecycle の Web サイト利用は無許可利用です。 .INPUTS なし。パイプラインからの入力は受け付けません。 .OUTPUTS ダウンロードした CSV データから生成されたオブジェクトです。 #> Param( [Parameter(Mandatory=$true,Position=1)] [String]$Product ) if ($Product -eq "") { $Product = "Windows Server" } $wc = New-Object System.Net.WebClient $url = 'https://support.microsoft.com/api/lifecycle/GetProductsLifecycle?query={"names":["' + $Product + '"],"years":"0","gdsId":0,"export":true}' $st = $wc.OpenRead($url) $enc = [System.Text.Encoding]::GetEncoding("UTF-8") $sr = New-Object System.IO.StreamReader($st, $enc) $html = $sr.ReadToEnd() $sr.Close() $htmlLine = $html.Split("`n") $htmlLine[0] = '"発売製品","ライフサイクル開始日","メインストリームサポート終了日","延長サポート終了日","サービスパックサポート終了日","備考"' ConvertFrom-Csv -InputObject $htmlLine Return } function ConvertTo-Narrow { <# .SYNOPSIS 全角文字列を半角文字列に変換します。 .DESCRIPTION 全角文字列を半角文字列に変換します。 すべての全角文字が半角に出来るわけではありません。 平仮名、片仮名、数字、アルファベットが変換できます。 全角平仮名は半角片仮名になります。 .EXAMPLE ConvertTo-Narrow -String "あいうえお" .EXAMPLE ConvertTo-Narrow -String "12345" .PARAMETER String 全角文字列を指定します。 .LINK .NOTES .INPUTS なし。パイプラインからの入力は受け付けません。 .OUTPUTS 半角に変換した文字列を返します。 #> Param( [Parameter(Mandatory=$true,Position=1)] [String]$String ) $a = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんぁぃぅぇぉゃゅょっ0123456789" $a += "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ" $a += "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" $a += "!#$%&()=~|-ー¥@{}「」[]【】〔〕`”`’`‘/*-+、,。.<>゛ ゜" $b = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ0123456789" $b += "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ" $b += "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" $b += "!#`$%&()=~|-ー\@`{}[][][][]`"`'``/*-+,,..<>゙ ゚" $c = "ヴがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ" $c += "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ" $d = "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ" $d += "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ" $Work = $String -Split "" $Work = $Work[1..($Work.Count-2)] $Result = "" foreach ($s in $Work) { if ($a.IndexOf($s) -ne -1) { # 普通の文字 $Result += $b[($a.IndexOf($s))] } else { if ($c.IndexOf($s) -ne -1) { # 濁音・半濁音 $Result += $d.Substring(($c.IndexOf($s)*2),2) } else { # 変換できない $Result += $s } } } $Result.Replace(" "," ") } function ConvertTo-Wide { <# .SYNOPSIS 半角文字列を全角文字列に変換します。 .DESCRIPTION 半角文字列を全角文字列に変換します。 すべての半角文字が全角に出来るわけではありません。 片仮名、数字、アルファベットが変換できます。 半角片仮名は全角片仮名になります。 .EXAMPLE ConverTo-Wide -String "アイウエオ" .EXAMPLE ConvertTo-Wide -String "12345" .PARAMETER String 全角文字列を指定します。 .LINK .NOTES .INPUTS なし。パイプラインからの入力は受け付けません。 .OUTPUTS 半角に変換した文字列を返します。 #> Param( [Parameter(Mandatory=$true,Position=1)] [String]$String ) $a = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ0123456789" $a += "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" $a += "!#$%&()=~|-ー¥@{}「」[]【】〔〕`”`’`‘/*-+、,。.<>゛ ゜" $b = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ0123456789" $b += "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" $b += "!#`$%&()=~|-ー\@`{}[][][][]`"`'``/*-+,,..<>゙ ゚" $c = "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ" $d = "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ" $Work = $String -Split "" $Work = $Work[1..($Work.Count-2)] $Result = "" $PreFetch = " " foreach ($s in $Work) { if ("゙ ゚".IndexOf($s) -ne -1 -and $d.IndexOf($PreFetch+$s) -ne -1) { $s = $PreFetch + $s $Result = $Result.Substring(0,$Result.Length-1) } if ($b.IndexOf($s) -ne -1) { # 普通の文字 $Result += $a[($b.IndexOf($s))] } else { if ($d.IndexOf($s) -ne -1) { # 濁音・半濁音 $Result += $c.Substring(($d.IndexOf($s)/2),1) } else { # 変換できない $Result += $s } } $PreFetch = $s } $Result.Replace(" "," ") } function Test-IsNumeric { <# .SYNOPSIS 指定した文字列が数値文字列か検証します。 数値文字列なら $True を、そうでないなら $False を返します。 数値文字列とは [int] などにキャスト変換できる文字列を指します。 .DESCRIPTION 指定した文字列が数値文字列か検証します。 数値文字列なら $True を、そうでないなら $False を返します。 .EXAMPLE Test-IsNumeric -String "100" 結果は $True .EXAMPLE Test-IsNumeric -String "123.4" 結果は $True .EXAMPLE Test-IsNumeric -String "1,234" 結果は $True .EXAMPLE Test-IsNumeric -String "123" 結果は $False 全角文字列は数値文字列とはみなされません。 .EXAMPLE Test-IsNumeric -String "123abc" 結果は $False .EXAMPLE Test-IsNumeric -String "百十五" 結果は $False .PARAMETER String 文字列を指定します。 .LINK .NOTES s .INPUTS なし。パイプラインからの入力は受け付けません。 .OUTPUTS 半角に変換した文字列を返します。 #> [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseDeclaredVarsMoreThanAssignments", "", Justification="The variable Work is suprress output int value.")] Param( [Parameter(Mandatory=$true,Position=1)] [String]$String ) Try { $Work = [int]$String; $True } catch { $False } } Export-ModuleMember -Function Get-PropertyNames, Get-MSProductLifeCycle, ConvertTo-Narrow, ConvertTo-Wide, Test-IsNumeric |