Windows 10 Powershell:为什么运行脚本这么复杂?

Windows 10 Powershell:为什么运行脚本这么复杂?,windows-10,powershell-5.0,Windows 10,Powershell 5.0,我想实现一些类似别名的命令,它可以让我通过键入更少的内容来浏览较长的目录路径 在中,我了解到不可能为诸如“cd c:\some\dir”之类的命令创建别名,但可以创建一个函数,将其保存到脚本中,然后运行它 因此,我创建了一个脚本,将其保存在目录C:\ps\u scripts中,确保该目录列在路径中,然后从C:\ps\u scripts打开ps并尝试发出命令。\script.ps1,但没有发生任何问题-没有错误,没有输出,没有导航到所需的目录路径。script.ps1包含以下代码: functio

我想实现一些类似别名的命令,它可以让我通过键入更少的内容来浏览较长的目录路径

在中,我了解到不可能为诸如“
cd c:\some\dir
”之类的命令创建别名,但可以创建一个函数,将其保存到脚本中,然后运行它

因此,我创建了一个脚本,将其保存在目录C:\ps\u scripts中,确保该目录列在路径中,然后从C:\ps\u scripts打开ps并尝试发出命令。\script.ps1,但没有发生任何问题-没有错误,没有输出,没有导航到所需的目录路径。script.ps1包含以下代码:

function fp { set-location "C:\Users\user\puppet\modules\fp\files\configs" }
然后,我搜索解决方案,并尝试按照接受的答案中的建议添加
powershell-noexit”&
来运行脚本,但得到的错误是
术语“$”无法识别

我的执行策略设置为RemoteSigned


可能是什么问题?

您将函数定义放入脚本中。您现在必须在某个地方调用/执行此函数。调用函数时,您的函数
fp
执行与
cd C:\Users\user\puppet\modules\fp\files\configs
相同的操作


如果希望函数在命令提示下可用,则必须在其名称前面加上
global:
,如下所述:

将函数定义放入脚本中。现在必须在某个地方调用/执行此函数。函数
fp
的作用与
cd C:\Users\user\puppet\modules\fp\files\co相同当调用nfigs时,nfigs


如果您希望在命令提示符下使用函数,则必须在其名称前面加上
全局:
,如下所述:

您应该使用适当的PowerShell来处理函数、命令和设置等内容

您可以获取适用范围-用户(当前或全部)和主机范围(当前主机或所有主机)的配置文件路径

例如,要获取所有主机(Windows PowerShell控制台,ISE)的当前用户的配置文件路径,您可以在PowerShell中键入-

Write-Output $PROFILE.CurrentUserAllHosts
这将告诉您将用于作用域的概要文件的路径

根据命令的输出创建一个具有相同路径和名称的文件,并将您的函数放入该文件中。当前用户将自动为任何PowerShell会话加载该文件,并且您可以使用该函数,而无需事先手动运行脚本。其行为类似于Linux中的.bashrc文件

在配置文件中设置功能的命令

在PowerShell中运行这些确切的命令,然后重新启动PowerShell,它将开始工作,然后您可以在此之后使用
fp
从该用户配置文件调用该函数

New Item-Path$PROFILE.CurrentUserAllHosts-Force
添加内容-Path$PROFILE.CurrentUserAllHosts-Value'函数fp{set location“C:\Users\user\puppet\modules\fp\files\configs”}
出口

您应该使用适当的PowerShell来实现这些功能,如功能、命令和设置

您可以获取适用范围-用户(当前或全部)和主机范围(当前主机或所有主机)的配置文件路径

例如,要获取所有主机(Windows PowerShell控制台,ISE)的当前用户的配置文件路径,您可以在PowerShell中键入-

Write-Output $PROFILE.CurrentUserAllHosts
这将告诉您将用于作用域的概要文件的路径

根据命令的输出创建一个具有相同路径和名称的文件,并将您的函数放入该文件中。当前用户将自动为任何PowerShell会话加载该文件,并且您可以使用该函数,而无需事先手动运行脚本。其行为类似于Linux中的.bashrc文件

在配置文件中设置功能的命令

在PowerShell中运行这些确切的命令,然后重新启动PowerShell,它将开始工作,然后您可以在此之后使用
fp
从该用户配置文件调用该函数

New Item-Path$PROFILE.CurrentUserAllHosts-Force
添加内容-Path$PROFILE.CurrentUserAllHosts-Value'函数fp{set location“C:\Users\user\puppet\modules\fp\files\configs”}
出口

我不确定,但也许你应该调用函数,而不仅仅是执行脚本?我不确定,但也许你应该调用函数,而不仅仅是执行脚本?你能指定我应该如何调用存储在脚本中的函数吗?只需键入“fp”、“fp()”和“script.ps1 fp”" ? 这些都不起作用。@kamokoba默认情况下,函数定义仅在定义的脚本中可用。您可以定义如下所述的函数的范围:好的,所以我在我的函数中添加了“global:”,现在是“function global:fp{set location”C:\Users\user\puppet\modules\fp\files\configs”}。重新启动PS会话并尝试再次运行脚本-未发生任何事情。“路径中有什么关键的东西吗?”kamokoba好的,让我们尝试另一种方法。在“文档”文件夹中,创建一个名为WindowsPowerShell的文件夹,然后在此文件夹中创建一个名为Microsoft.PowerShell_profile.ps1的文件,并将函数定义放在其中。然后重新启动PowerShell并尝试通过在shell中键入函数名来执行函数。谢谢,它现在可以工作了。即使没有“global”关键字,它也可以工作。您可以指定如何调用存储在脚本中的函数吗?只需键入“fp”、“fp()”和“script.ps1 fp”?这些都不起作用。@kamokoba默认情况下,函数定义仅在定义的脚本中可用。您可以定义如下所述的函数的范围:好的,所以我在我的函数中添加了“global:”,现在是“function global:fp{set location”C:\Users\user\puppet\modules\fp\files\configs”}。重新启动PS会话并尝试再次运行脚本-未发生任何事情。“路径中有什么关键的东西吗?”kamokoba好的,让我们尝试另一种方法。在“文档”文件夹中,创建一个名为WindowsPowerShell的文件夹,然后在