gpt4 book ai didi

powershell - 获取传递给 powershell.exe 的参数

转载 作者:行者123 更新时间:2023-12-02 22:35:53 25 4
gpt4 key购买 nike

有没有办法在 Profile 脚本中确定传递给 powershell 可执行文件的参数是什么?

用例

我想检查是否设置了 WorkingDirectory 参数,然后再用我自己的 cd 覆盖它在我的用户资料中。

尝试

我做了一些无助的尝试,从配置文件脚本中获取变量值,但没有成功。他们似乎都没有给我任何关于是否 pwsh.exe 的信息。用 -wd 调用参数与否:

echo $PSBoundParameters
echo $ArgumentList
echo (Get-Variable MyInvocation -Scope 0).Value;

最佳答案

检查 PowerShell 自己的调用命令行 , 您可以使用:

  • [Environment]::CommandLine (单弦)
  • [Environment]::GetCommandLineArgs() (参数数组,包括可执行文件作为第一个参数)。

  • 这些技术也适用于类 Unix 平台。
    警告:从 PowerShell Core 7 (.NET Core 3.1) 开始,它是 pwsh.dll ,不是 pwsh[.exe]报告为可执行文件。

    登记您的 $PROFILE如果在启动时指定了工作目录,则文件 可能看起来像这样,但请注意,该解决方案并非万无一失:
    $workingDirSpecified =
    ($PSVersionTable.PSEdition -ne 'Desktop' -and
    [Environment]::GetCommandLineArgs() -match '^-(WorkingDirectory|wd|wo|wor|work|worki|workin|working|workingd|workingdi|workingdir|workingdire|workingdirec|workingdirect|workingdirecto|workingdirector)') -or
    [Environment]::CommandLine -match
    '\b(Set-Location|sl|cd|chdir|Push-Location|pushd|pul)\b'
  • 在 PowerShell Core 中,可能已使用 -WorkingDirectory 指定了工作目录。/-wd参数(Windows PowerShell 不支持);例如。,pwsh -WorkingDirectory /
  • 注意:鉴于只指定参数名称的前缀就足够了,只要该前缀唯一标识参数,还需要测试 wo , wor , work , ...

  • 在 PowerShell Core 和 Windows PowerShell 中,工作目录可能已使用 cmdlet 调用(可能通过内置别名)设置为 -c 的一部分。/-Command论点(例如,pwsh -NoExit -c "Set-Location /" )
  • 注意:在这种情况下,与 -WorkingDirectory 不同,工作目录在$PROFILE时还没有改变。文件已加载。


  • 有可能,但不太可能产生误报;使用一个人为的例子: pwsh -NoExit -c "'Set-Location inside a string literal'"

    关于powershell - 获取传递给 powershell.exe 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58493279/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com