就像标题所示,当我在Visual Studio 2013或Powershell ISE中编写Powershell脚本时。如果我对脚本进行了更改,则在我运行该脚本时,所做的更改要等到第二次运行后才能应用。不只是变量,还有整行代码。
以下是产生问题的示例代码:
Write-Output "Code Updates";
Test;
Function Test{
Write-Output "Code Doesn't Update";
}
如果您同时在两个Write-Output命令中都更改了文本,则第一次运行时只有函数外部的文本会更新。
关于为什么发生这种情况的任何建议吗?
答案 0 :(得分:0)
Powershell脚本仅从上至下读取。我必须先声明该函数,然后再调用它。
答案 1 :(得分:0)
是的,您要在没有时间重新声明功能并获取更改之前调用该功能。
在测试时,您可以突出显示该功能并按F8键(在ISE中)以重新声明该功能,而不必重新运行整个脚本。
最佳实践表明,在执行任何逻辑之前,您应该先将功能置于顶部。将功能放在模块文件中,然后将模块导入第一行。
问候,埃德沃利。
答案 2 :(得分:0)
您不能使用不存在的代码。您说您正在使用Visual Studio 2013,这意味着您是开发人员类型或正在尝试成为开发人员类型。函数就像Visual Studio引用/库一样。除非先加载并实例化引用/库,否则不能使用它。
脚本语言自上而下阅读,自上而下加载操作。
以后要与其他代码块相关的操作使用的任何代码,例如函数或模块及其公开的函数和方法,必须首先加载。
如果要使用任何PowerShell cmdlet,则必须先加载其模块,并因此加载其关联方法,函数,类等
您编写的任何自定义函数必须是脚本加载/读取的第一件事。
有关其他指南,请参见以下内容。
设计PowerShell功能使其可重用
以下是我在编写函数时要考虑的几件事 可以重用:
•功能应简短而优美。函数应该做一件事 并做得很好。如果您的功能是实现多层 关于处理和逻辑,您应该将其分解为 较小的功能。除了参数和注释,我建议 函数的主体很少应该超过10或12 代码行。如果比这更长,请问问自己是否采取了步骤 可以进一步细分。
•函数应该是流水线友好的。 函数应该从管道中获取输入对象,然后编写 对象到管道。可重用函数永远不要使用 写主机,除非您正在编写专门用于格式化的函数 一些特殊格式。记住,输出的东西 未将Write-Host放入管道中。
•明智地使用参数。 参数通常应始终具有默认值。例如,一个 Get函数应始终返回一个值。参数可以用来 允许用户筛选cmdlet的输出。想想如何 获取流程有效。您可以指定一个特定的过程,但如果这样做 不,他们都被退回了。在编写函数时,您 声明变量,您应该问问自己这是否是 最终用户可能想要更改。如果是这样,请提供一个良好的默认值 大多数人都会使用,但如果最终用户愿意,则允许最终用户对其进行更改 至。
•应该正确命名函数。确保您使用 可接受的动词和经过深思熟虑的名词来实现您的功能。如果你 遵守这些标准,其他人将更容易纳入 您的功能纳入他们的代码。而且,它将使您的功能更多 可发现的,最终用户将对期望的结果有一个很好的了解 当他们看到您的功能名称时。
Windows PowerShell:构建更好的功能 https://technet.microsoft.com/en-us/library/hh360993.aspx