gpt4 book ai didi

powershell - 为什么函数在第一次运行后才在本地可用?

转载 作者:行者123 更新时间:2023-12-03 16:41:13 26 4
gpt4 key购买 nike

我在这里有两个问题,为什么在运行脚本时无法识别脚本中的以下函数:

脚本:

$pathN = Select-Folder
Write-Host "Path " $pathN

function Select-Folder($message='Select a folder', $path = 0) {
$object = New-Object -comObject Shell.Application

$folder = $object.BrowseForFolder(0, $message, 0, $path)
if ($folder -ne $null) {
$folder.self.Path
}
}

我收到错误:
The term 'Select-Folder' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try aga

在。

但是如果我在 Windows Powershell ISE 中加载并运行它,它会第一次给我错误,然后就像它已经“注册”了该函数并在此之后工作。

如果这是一个程序问题,我已经尝试在顶部列出该功能,但运气不佳。

注意 我尝试过简单的函数,例如:
Write-host "Say "
Hello

function Hello {
Write-host "hello"
}

具有相同的确切结果/错误,它提示 Hello 不起作用....

此外,它仍然不会只在 powershell 中运行脚本(仅在第一次初始尝试后才在 ISE 中运行)。

最佳答案

在尝试使用它之前,您需要声明您的 Select-Folder 函数。该脚本是从上到下读取的,因此在您尝试使用 Select-Folder 的第一遍时,它不知道这意味着什么。

当您将它加载到 Powershell ISE 时,它会在第一次运行时找出 Select-Folder 的含义,并且它仍然会知道您第二次尝试运行它(这样您就不会收到错误信息)。

因此,如果您将代码更改为:

function Select-Folder($message='Select a folder', $path = 0) { 
$object = New-Object -comObject Shell.Application

$folder = $object.BrowseForFolder(0, $message, 0, $path)
if ($folder -ne $null) {
$folder.self.Path
}
}

$pathN = Select-Folder
Write-Host "Path " $pathN

每次运行它都应该工作。

关于powershell - 为什么函数在第一次运行后才在本地可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8546086/

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