2

Set-LocationPowerShell 用のコマンドレットを作成していますが、コマンドレット内から(別名)を呼び出せるようにする必要がありますcd。私はこのようにします

var setLocation = new Microsoft.PowerShell.Commands.SetLocationCommand();
setLocation.Path = path;
setLocation.Invoke();

というエラーが表示されることを除いてYou cannot invoke a cmdlet that derrives from PSCmdlet。を使用しSet-Locationたいのですが、シェルのディレクトリを変更するだけで十分です。

4

5 に答える 5

2

私が見つけた最良の答えは、InvokeScriptディレクトリを変更するために使用することでした:

InvokeCommand.InvokeScript(string.Format("Set-Location {0}", fullPath));

これを行うための「より多くのC#」方法がある可能性がありますが、私はそれを見つけることができませんでした.

于 2012-08-05T03:00:56.487 に答える
0

PSCMDLET ではなく、CMDLET から派生させることができます。

于 2012-08-04T12:52:57.280 に答える
-1

スクリプトでSet-Locationを使用する場合、通常は最初にPush-Locationを使用して現在の場所を保存し、次にスクリプトの最後にPop-Locationを使用してユーザーを元の場所に戻すことができます。

Push-Location $PWD
Set-Location $somewhere
#script body
Pop-Location

もちろん、スクリプトの目的は、ユーザーのディレクトリを変更することです。

于 2012-08-03T04:51:43.530 に答える
-1

スクリプト内で Set-Location を使用するだけで機能します。

たとえば、次のようになります。

# Script.ps1
CD ~
Get-Location
Set-Location c:\Windows
Get-location

スクリプトが終了したら、Get-Location をもう一度試してください。

于 2012-08-02T12:26:44.933 に答える