Uri クラス (System)
URI (Uniform Resource Identifier) のオブジェクト表現と URI の部分への簡単なアクセスを提供します。
Uri クラス (System) | Microsoft Docs より、プロパティの一覧を取得するC#のコード例が載っている。
C#の場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
Uri uri = new Uri("https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName"); Console.WriteLine($"AbsolutePath: {uri.AbsolutePath}"); Console.WriteLine($"AbsoluteUri: {uri.AbsoluteUri}"); Console.WriteLine($"DnsSafeHost: {uri.DnsSafeHost}"); Console.WriteLine($"Fragment: {uri.Fragment}"); Console.WriteLine($"Host: {uri.Host}"); Console.WriteLine($"HostNameType: {uri.HostNameType}"); Console.WriteLine($"IdnHost: {uri.IdnHost}"); Console.WriteLine($"IsAbsoluteUri: {uri.IsAbsoluteUri}"); Console.WriteLine($"IsDefaultPort: {uri.IsDefaultPort}"); Console.WriteLine($"IsFile: {uri.IsFile}"); Console.WriteLine($"IsLoopback: {uri.IsLoopback}"); Console.WriteLine($"IsUnc: {uri.IsUnc}"); Console.WriteLine($"LocalPath: {uri.LocalPath}"); Console.WriteLine($"OriginalString: {uri.OriginalString}"); Console.WriteLine($"PathAndQuery: {uri.PathAndQuery}"); Console.WriteLine($"Port: {uri.Port}"); Console.WriteLine($"Query: {uri.Query}"); Console.WriteLine($"Scheme: {uri.Scheme}"); Console.WriteLine($"Segments: {string.Join(", ", uri.Segments)}"); Console.WriteLine($"UserEscaped: {uri.UserEscaped}"); Console.WriteLine($"UserInfo: {uri.UserInfo}"); // AbsolutePath: /Home/Index.htm // AbsoluteUri: https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName // DnsSafeHost: www.contoso.com // Fragment: #FragmentName // Host: www.contoso.com // HostNameType: Dns // IdnHost: www.contoso.com // IsAbsoluteUri: True // IsDefaultPort: False // IsFile: False // IsLoopback: False // IsUnc: False // LocalPath: /Home/Index.htm // OriginalString: https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName // PathAndQuery: /Home/Index.htm?q1=v1&q2=v2 // Port: 80 // Query: ?q1=v1&q2=v2 // Scheme: https // Segments: /, Home/, Index.htm // UserEscaped: False // UserInfo: user:password |
それを、PowerShell版に置き換えた場合のコード例
工夫したところは、プロパティ名をリスト出力し、コマンド文字列を動的生成した上で、Invoke-Expression を使って結果出力させているところ。
プロパティ名をリスト出力し、コマンド文字列を動的生成した上で、Invoke-Expression を使って結果出力させる手法は、これ以外のクラス(オブジェクト)でも利用できる。
Powershell版
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$URI Property Count: 22 1 $URI.AbsolutePath : /Home/Index.htm 2 $URI.AbsoluteUri : https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName 3 $URI.Authority : www.contoso.com:80 4 $URI.DnsSafeHost : www.contoso.com 5 $URI.Fragment : #FragmentName 6 $URI.Host : www.contoso.com 7 $URI.HostNameType : Dns 8 $URI.IdnHost : www.contoso.com 9 $URI.IsAbsoluteUri : True 10 $URI.IsDefaultPort : False 11 $URI.IsFile : False 12 $URI.IsLoopback : False 13 $URI.IsUnc : False 14 $URI.LocalPath : /Home/Index.htm 15 $URI.OriginalString : https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName 16 $URI.PathAndQuery : /Home/Index.htm?q1=v1&q2=v2 17 $URI.Port : 80 18 $URI.Query : ?q1=v1&q2=v2 19 $URI.Scheme : https 20 $URI.Segments : / Home/ Index.htm 21 $URI.UserEscaped : False 22 $URI.UserInfo : user:password |
コメント