以下は、私が試したことと何が起こるかを記録したものです。
以下が機能しない理由の説明とともに、特定のオーバーロードを呼び出す方法を探しています。あなたの答えが「代わりにこのコマンドレットを使うべきです」または「それを二度呼ぶべきです」であるならば、私があなたの答えを受け入れないときを理解してください。
PS C:\> [System.IO.Path]::Combine("C:\", "foo")
C:\foo
PS C:\> [System.IO.Path]::Combine("C:\", "foo", "bar")
Cannot find an overload for "Combine" and the argument count: "3".
At line:1 char:26
+ [System.IO.Path]::Combine <<<< ("C:\", "foo", "bar")
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
PS C:\> [System.IO.Path]::Combine(, "C:\", "foo", "bar")
Missing ')' in method call.
At line:1 char:27
+ [System.IO.Path]::Combine( <<<< , "C:\", "foo", "bar")
+ CategoryInfo : ParserError: (CloseParenToken:TokenId) [], Paren
tContainsErrorRecordException
+ FullyQualifiedErrorId : MissingEndParenthesisInMethodCall
PS C:\> [System.IO.Path]::Combine($("C:\", "foo", "bar"))
Cannot find an overload for "Combine" and the argument count: "1".
At line:1 char:26
+ [System.IO.Path]::Combine <<<< ($("C:\", "foo", "bar"))
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
これは私がc#で行うことです。これは機能します。
var foobar = Path.Combine(@"C:\", "foo", "bar");
Console.WriteLine(foobar);
どのPowershellがその特定の過負荷を呼び出しますか?Path.Combineには、次の両方があります。
public static string Combine (string path1, string path2, string path3);
public static string Combine (params string[] paths);
これらの両方、または1つだけを呼び出すことは可能ですか?明らかに、この特定のケースでは、違いを見分けるのは困難です。