问题标签 [powershell-ise]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3653 浏览

powershell - 尝试使用 $ 变量参数化命令时出错

我正在尝试使用以下代码片段执行命令:

但是,这样做会导致以下错误消息:

我也试过

但现在这给了我

但至少命令运行了,但它似乎没有收到我发送给它的任何参数......我猜我在这里忽略或未能掌握 PowerShell 的基本概念。我哪里出错了?

0 投票
2 回答
58503 浏览

powershell - 从当前目录获取子文件夹中文件的相对路径

是否有任何直接的方法(通过使用 cmdlet 或 .NET 类)从给定路径仅获取子文件夹中文件的相对路径?

例如,当前文件夹是C:\MyScript,并且有一个用文件调用的子文件夹DataTest.txt所以我想查看Data\Test.txt而不是C:\MyScript\Data\Test.txt

0 投票
1 回答
1192 浏览

powershell-ise - 是什么导致了这个无用的 Powershell ISE 错误消息?

我正在尝试将 Powershell ISE 用作控制台应用程序,但收效甚微。Comskip 是一个命令行工具,我有一个 AHK 脚本执行 Comskip 商业广告通常通过cmd.exe. 工作正常,但最近我开始在文件名中使用 Unicode 字符(星级),众所周知,这些字符在控制台中的显示效果不会特别好。

调查使我找到了应该支持 Unicode 的 Powershell ISE。从 ISE 运行 Comskip 被证明是相当具有挑战性的。如果手动输入所有内容,它可以正常工作,但是从另一个脚本调用它时问题就开始了。

现在有问题的部分是,如果使用调用普通 Powershell 控制台的代码一切正常。但是调用 ISE 的相同代码失败了,我不明白为什么。你们中的任何一个都可以吗?我收到的错误消息没有给出任何关于出错的明确线索。错误信息只说:

用法:powershell_ise.exepowershell_ise.exe fileName.ps1

调用 ISE 的 AHK 线路如下所示:

现在,如果使用 Powershell 控制台,同样的代码可以正常执行:

我怎么会得到这些异常?

0 投票
3 回答
2537 浏览

powershell - Powershell 错误在 ISE 中正确输出,但在命令行执行中没有

我在 powershell ISE 中运行的命令退出了我的预期,但是当我将代码移动到命令行以在不同的环境中执行时,我不再收到错误。该错误仅发生在 ISE 中。我曾尝试像其他人发布的那样在命令行上使用 -sta,但没有运气。

当我通过 ISE 运行它时,我得到以下输出:

当我在命令行上运行该命令时,我得到以下输出:

如您所见,我正在尝试检查返回代码并在 ISE 中获得正确的操作,但没有通过命令行获得正确的结果。

我想知道 Windows 在 ISE 中运行时是否使用了不同的环境变量。我注意到当我通过 ISE 运行它时,控制台以红色显示错误。

0 投票
4 回答
2171 浏览

powershell - 在 powershell 中查找和替换

我的文本文件如下所示:

我不想做的,编辑这个文件,只改变Set PRGVER="V1.0.12"一个新的数字,像这样Set PRGVER=V1.0.13"
什么时候开始 PS 脚本,我不知道整个字符串,. 之间的数字""
我只知道,找到字符串变量:Set PRGVER=""

如何仅替换 之间的第一个值""

0 投票
2 回答
12729 浏览

powershell - Copy-Item / Remove-Item 仅没有根文件夹的子内容?

嗨,我正在努力解决以下问题 - 假设我有以下目录结构 C:\Temp\Test1 和 C:\Temp\Test2

我想做的是递归地将 C:\Temp\Test1 的子内容复制到 C:\Temp\Test2 而不复制实际文件夹 C:\Temp\Test1 ..如果我现在使用命令

将导致 C:\Temp\Test2\Test1 并且没有参数组合似乎可以缓解问题

同样,当我希望删除 C:\Temp\Test2 中的所有子内容时,我希望只删除子内容而不是实际文件夹,例如

正在删除 \Test2 文件夹。我已经尝试了这么多的参数变化 - 我怎样才能完成我想要做的事情?

0 投票
1 回答
2627 浏览

powershell - 我可以使 PowerShell $error 对象在脚本和交互模式下的行为一致吗?

我正在编写一个$error用于检测和响应错误的 PowerShell 脚本。我的问题是,$error根据我运行脚本的方式,我会得到不同的对象行为。如果我以交互方式运行它(特别是从 PowerShell ISE),则会将错误添加到集合中,但如果我从命令行运行相同的脚本,则会发生相同的错误,但不会添加到集合中。

这是脚本(简化以说明问题):

当我从 PowerShell ISE 运行它时,它的行为符合预期。SQLCMD 引发一个非终止错误,该错误被捕获和处理。这是输出:

但是当我从命令行运行它时,就像我要设置一个计划任务一样,没有任何内容被添加到$error,并且没有引发异常。这是输出:

如果我从 powershell 命令行而不是 cmd.exe(这是有道理的)运行脚本文件,我也会得到相同的结果。例如:

我怀疑这与执行上下文有关,或者可能与我仍然不太了解的解析器模式有关,甚至可能与我的个人资料有关(尽管到目前为止,我一直在同一台 PC 上运行同一帐户下的所有内容) . 我在网上看到了很多使用这种基本方法的示例try/catchwith $ErrorActionPreference = "Stop",所以看起来我应该能够完成这项工作。

所以我的问题本质上是:我可以让这个脚本像我认为的那样工作吗?如果不是,我有什么误解?我如何捕捉到这些类型的错误?如果有帮助,我不需要对此进行超级详细的异常处理,我只需要知道什么时候出现问题,以便我的任务监视器可以提醒我。powershell.exe 的非零返回码就足够了。

我正在研究使用$?, 和$LASTEXITCODE,但我打赌$?会遇到与 , 相同的问题$error,并且两者都只适用于执行的最后一条语句,这不太理想,因为我的真实脚本比这个例子长得多。

编辑:
好的,我已经了解到 Windows 可执行文件(例如 sqlcmd)永远不会向$error集合中添加任何内容,即使它们返回非零退出代码。$error如果我理解正确,仅由 cmdlet 使用。$LASTEXITCODE尽管我也可以使用,但我的脚本通过重复使用来工作$?,因为它可以识别 Windows 可执行退出代码,并且对于非零值设置为 false。

总而言之,从命令行运行脚本时的行为是正确的、预期的行为。不过,我仍然不知道为什么我从 PowerShell ISE 得到不同的结果。

0 投票
2 回答
390 浏览

powershell-2.0 - 无法在 PowerShell 中创建函数

我正在尝试使用本教程在我的 PowerShell ISE 中添加一个菜单项。

但由于某种原因,我收到此错误:

我运行 Windows 7 Enterprise 并以管理员身份运行 PowerShell ISE...

对这个问题有什么想法吗?

0 投票
1 回答
1081 浏览

powershell-ise - Powershell 调试事件 -Action 代码块

我有脚本在特定目录中监视文件创建。我在创建 System.IO.FileSystemWatcher 后使用 Register-ObjectEvent,

它工作得很好,但是如果我在 -Action 代码块中设置断点,IDE 会生成:

警告:'D:\My Stuff\Desktop\scripts\fileWatcher.ps1:15' 上的断点行断点不会被命中

此消息在我将文件放入我正在观看的目录后立即发生,并且我可以看到我的 Write-Host 在上述“警告”之后立即打印出我的消息。

这是正常的吗?
我需要添加更多代码并且可以真正使用调试器。我应该怎么做,这样我才能调试这个代码块?

0 投票
1 回答
997 浏览

sqlite - 如何从 PowerShell ISE 运行像 SQLite 这样的 shell?

我想用 sqlite3.exe 做一些事情,sqlite3 命令行 shell。导航到 PowerShell ISE 中的目录后,我运行程序.\sqlite3.exe并从 SQLite 获得预期的输出:

但是,如果我尝试.help在此之后键入或任何其他命令,则不会发生任何事情,并且底部任务栏会显示“已在运行命令。请稍候。”。当然,没有什么可等待的,因为显然 sqlite3.exe 正在等待的输入。

在此之后,我无法让 PowerShell ISE 响应任何进一步的命令,除非我使用 Ctrl+Break 退出 SQLite。

怎么了?