问题标签 [powershell-3.0]

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 回答
1871 浏览

powershell - 如何在 PowerShell 远程处理会话的提示中为机器名称添加颜色?

为了让我在远程到实时/生产服务器时更加明显,我认为在使用远程 PowerShell 会话时能够为我连接的机器名称着色会很方便。

但是,我看不到这样做的方法......服务器名称前缀似乎独立于 Prompt 函数,即使我可以使用它,我也不确定如何定义一个新的 Prompt 仅用于会话的持续时间。

有没有办法自定义这个?注意:我不想将所有服务器名称都涂成相同的颜色,我想区分本地/生产服务器。

0 投票
9 回答
41218 浏览

shell - 如何使用 PowerShell 快捷方式中的“默认”颜色启动 powershell.exe?

当您从预安装的快捷方式之一启动 PowerShell 窗口时,我会附上漂亮的蓝色窗口。但是,如果你手动启动 powershell.exe,你不会得到这些颜色,你会得到黑色/白色 :(

这是因为默认设置是在快捷方式 (.lnk) 文件中设置的:

PowerShell 快捷方式颜色设置

我在资源管理器上下文菜单中有一个“PowerShell Prompt Here”条目,我希望它使用与常用快捷方式相同的漂亮颜色来启动 PowerShell;黑色很糟糕,而且拥有不同颜色的窗口会令人困惑(尤其是当我经常打开一些也是黑色的老式命令窗口时!)。

到目前为止,我在尝试设置时发现了两个问题:

  1. 从 PowerShell 中设置颜色似乎只允许某些值(ConsoleColor 枚举),这些值都不匹配默认快捷方式上的值。
  2. 在 PS 配置文件中设置颜色只会导致之后写入的文本采用新的背景颜色。添加“cls”会导致原始颜色在开始时出现令人讨厌的闪光。

有什么方法可以从命令行启动 PowerShell(即,我可以将其作为资源管理器上下文菜单项嵌入注册表)使用与快捷方式相同的设置?

0 投票
2 回答
3792 浏览

powershell - 如何在作为字符串而不是 ScriptBlock 的远程会话中执行 PowerShell 块?

我正在尝试在远程 PowerShell 会话中自定义我的提示。这一切都很好:

它创建一个会话,为方便起见设置一个 PSDrive,然后将提示自定义为“测试”。

但是,我不希望我的提示说“测试”,我想执行一些为服务器名称着色的代码。但是,我不想在脚本块(上面的a)中对其进行硬编码,因为我想在许多类似的函数中重用它来连接到不同类型的服务器。

所以我在本地定义了函数,并且可以使用“Get-Content function:\RemotePrompt”获取内容。但是,我正在努力弄清楚如何将其发送到另一个会话。Invoke-Expression 似乎不需要会话,并且 Invoke-Command 似乎总是期望一个脚本块。

我真正想要做的是类似Invoke-Command -ScriptBlock { function prompt $MyRemoteCode }但变量被“解析”的东西。

这可能/容易吗?

0 投票
1 回答
3345 浏览

powershell - 使用 PowerShell 注册计划作业

我创建了一个 PowerScript 文件,它将在我的服务器上进行一些文件清理。我希望它每天晚上 11:30 运行,所以根据 Microsoft 的技术说明,我使用以下语法来注册作业:

没有错误消息,所以我可以假设它已成功注册。但是,我不知道如何列出已设置的作业。我已经使用过Get-Job,但它什么也没返回,这会让我相信它还没有注册,但是如果我运行相同的语法来重新注册计划的作业,我会收到错误消息“已经注册”。

所以,我的问题是:

  • 如何获取服务器上的计划任务列表?
  • 如何更新作业的日程安排?
  • 我如何立即执行现有作业,而不是等待?我想检查它是否作为计划作业(我已经手动运行脚本来检查它是否有效)

谢谢大家 - PowerShell 的新手,但它看起来很棒。

提前感谢艾尔

0 投票
1 回答
2461 浏览

windows - Windows PowerShell - 要运行的数组

我有这个让我抓狂的问题:

我有一个功能

这保存在文件 test.ps1 中。当我每次写它时像“.\test.ps1”一样执行它

为什么会这样?如果我喜欢它是行不通的

并做一个像

为什么?

0 投票
6 回答
5450 浏览

powershell - 双击启动Powershell脚本时不起作用

执行 powershell 脚本时出现一些奇怪的行为。

  • 当我使用 ISE 运行我的脚本时,它工作得很好。
  • 当我打开 Powershell.exe 并运行我的脚本时,它工作得很好。
  • 当我打开 cmd 并使用 启动我的脚本powershell.exe -noexit ./myscript.ps1时,myscript 工作得很好。

但是,当我双击 myscript 时,powershell 会打开几毫秒,我看到它显示一些错误(红色字体)并且 powershell 窗口关闭。由于 powershell 窗口关闭得很快,我无法找到导致此问题的错误。我什至在我的洞脚本周围尝试了一个大的 try-catch 块,捕获任何一个[Exception]并将其写入日志文件。但是:没有生成日志文件(没有调用catch)。

我如何跟踪该问题?什么可能导致麻烦?请注意,我的执行策略设置为不受限制。

0 投票
1 回答
3337 浏览

powershell - get-childItem 的新-file 参数是像-filter 一样快还是像-include 一样慢?

编辑希望在这里澄清我令人费解和误导性的问题......基于我错误的假设 -file 接受输入。感谢您直截了当地指出这只是一个开关参数;我的示例中的输入实际上被传递给 -path。听起来这可能是搜索多种文件类型的最快的纯 powershell 方法,因为 -filter 只接受单个输入,而 -include 速度较慢。

get-childItem文档说“过滤器比其他参数更有效,因为提供程序在检索对象时应用它们,而不是让 Windows PowerShell 在检索对象后对其进行过滤。”

v3 有一个带有 -file 参数的新参数集,可能是为了排除目录,以匹配 cmd.exe 的dir /a:-d

与 -include 一样,与 -filter 不同,-file 接受多个,如gci -file "*.ldf","*.bak"

所以我想知道,并且迄今为止未能可靠地测试,如果 -file 从性能角度来看就像 -filter,即“更有效”,或者更像是像 -include 这样的“其他参数”。如果 -file 是一个过滤器,那很好,因为 afaict -filter 一次只处理一个过滤器,所以如果您想要多个过滤器(如 *.ldf 和 *.bak),那么您需要运行gci -filter两次或使用 -include 代替。所以我想知道 -file 是否可以让我们为多个过滤器获得过滤器的效率优势。

我偶然发现了一些让我乐观的错误文本。-file 参数希望 -path 成为当前目录,因此gci -path $path -file "*.bak","*.ldf"会出错。Push-location 似乎是一种可行的解决方法,但在这里我对错误文本的内容更感兴趣:

Get-ChildItem:无法将“System.Object[]”转换为参数“Filter”所需的类型“System.String”。不支持指定的方法。

我调用了-file,但错误抱怨“参数'过滤器'”。所以也许 -file 像过滤器一样有效?OTOH,-filter 不需要 -path 是当前目录,因此在这方面 -file 更像 -include。

0 投票
1 回答
12514 浏览

powershell - 如何在 v2 模式下运行 PowerShell v3 控制台

在最近的 Windows Server 2008 R2 更新中,他们也在推动 Windows PowerShell V3.0。但是,到目前为止,我们的脚本都是在 V2 中构建和测试的。如何在 V2 模式下运行 PowerShell V3 控制台。?

注意:我在启动 PowerShell.exe 时尝试了“-Version 2”。但它不起作用。

0 投票
1 回答
787 浏览

powershell - 复制/创建多个文件

我需要先创建然后通过 powershell 复制数百个文件夹和文件(首先在本地存储上创建它们,然后将它们复制到远程存储)。但是,当我的 foreach 循环运行时,由于“另一个进程”阻塞了文件/文件夹,每 40 次左右的写入尝试都会失败。我目前在每个文件创建(100 毫秒)之间使用简单的睡眠解决了这个问题。但是,我想知道是否没有更好的方法来做到这一点?特别是在复制多个文件时,睡眠将取决于网络延迟,对我来说似乎不是一个好的解决方案。

有没有办法在开始另一个操作之前“等待”文件的写操作完成?或者检查一个文件是否仍然被一个进程阻止并等到它再次空闲?

0 投票
1 回答
5169 浏览

xml - Powershell循环通过xml创建一个锯齿状数组

我猜这很简单,我只是从 powershell 开始,在网上搜索了几个小时后似乎找不到简单的解决方案。

基本上我有以下xml文件

而且我想将内容放入锯齿状的二维数组中,因此系统将如下所示:

  • (主机 1),(服务 1,服务 2)
  • (主机2),(服务1)

是否可以遍历每个元素并创建这样的数组?

我希望按上述方式存储数据,以便我可以使用 [0][0] 来引用主机名,然后使用 [1][1..x] 来引用该主机的所有服务。

这有任何意义吗?

非常感谢任何帮助或更好的方法。