javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

使用PowerSh查找第一个与模式匹配的文件

我想在目录中选择任何一个“ .xls”文件。 问题是dir命令可以返回不同的类型。

gci *.xls

将返回

  • object [],如果有多个文件
  • 如果只有一个文件,则为FileInfo
  • 如果没有文件,则为null

我可以处理null,但是如何选择“第一个”文件?

trans by 2020-02-14T20:22:40Z

将XML文件保存在Powershell中需要完整的路径。 为什么?

我正在使用Powershell的XML功能来修改.config文件。除非提供完整的路径名,否则调用XMLDocument.Save不会有任何效果。

# Open the xml file
$config = [xml](get-content web.config)
#
# modify the XML
$config.SelectNodes("./configuration/connectionStrings/add[@name='LocalSqlServer']") | % { $connNode = $_ }
$connNode.connectionString = $connNode.connectionString -replace '^(.*)Server=[^;]+(.*)$', '$1Server=192.168.5.2$2'
#
#
# Now I save it again
#
# This doesn't save it!
$config.Save("web.config");
# However, this works
$config.Save("{0}\\web.config" -f (get-location));

$ config.Save(“ web.config”)为什么不起作用?

我是否最终将其保存到本地目录以外的其他位置?

trans by 2020-02-12T19:38:05Z

我如何确定可执行文件在哪个平台上编译?

我需要使用针对x86,x64和IA64制作的Windows可执行文件。 我想通过检查文件本身来以编程方式找出平台。

我的目标语言是PowerShell,但可以使用C#示例。 如果您知道所需的逻辑,那么以上任何一个均将失败。

trans by 2020-02-12T08:37:25Z

PowerShell内联If(IIf)

如何在PowerShell中创建带有内联If(IIf,另请参见:即时if或三元If)的语句?

如果您还认为这应该是本机PowerShell功能,请对此投票:[https://connect.microsoft.com/PowerShell/feedback/details/1497806/iif-statement-if-shorthand]

更新(2019年10月7日)

Microsoft Connect已退休,但好消息是,正在使用PowerShell(Core)语言支持三元运算符...

trans by 2020-02-11T20:31:34Z

powershell-如何解码Base64字符串?

我在Powershell中有一个普通字符串,该字符串来自包含Base64文本的文本文件; 它存储在YmxhaGJsYWg=中。我正在尝试将其解码为:

$z = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($x));

如果YmxhaGJsYWg=是在Powershell中创建的Base64字符串,则此方法有效(但不是)。 而这不适用于来自文件的䐲券 Base64字符串,blahblah最终会像䐲券这样结束。

我想念什么? 例如YmxhaGJsYWg=可以是䐲券,这是blahblah的Base64。

简而言之,将YmxhaGJsYWg=保存在一个文本文件中,然后在此Powershell代码中放入一个字符串,我尝试对其进行解码,但最终得到䐲券等。

trans by 2020-02-10T12:16:26Z

在Powershell中,将字符串转换为int的惯用方式是什么?

我发现的唯一方法是直接投射:

> $numberAsString = "10"
> [int]$numberAsString
10

这是Powershell中的标准方法吗? 是否期望在进行转换之前先进行测试,以确保转换成功?

trans by 2020-02-10T02:25:49Z

如何获取我执行的PowerShell脚本的目录?

这个问题已经在这里有了答案:

  • 确定当前PowerShell脚本位置的最佳方法是什么?                                     13个答案

我运行一个PowerShell脚本。 如何获取我运行的该脚本的目录路径?

这该怎么做?

trans by 2020-02-10T02:23:56Z

从powersh的列中选择不同的项目

如果我在PowerShell中发出以下命令,则会返回很多行。

PS C:\Users\benh> get-command

CommandType     Name                               ModuleName                         Definition
-----------     ----                               ----------                         ----------
Cmdlet          Get-Variable                       Microsoft.PowerShell.Utility       Get-Variable...
Cmdlet          Get-WebAppDomain                   WebAdministration                  Get-WebAppDomain...
Cmdlet          Get-WebApplication                 WebAdministration                  Get-WebApplication...
Cmdlet          Get-WebAppPoolState                WebAdministration                  Get-WebAppPoolState...
...
Cmdlet          Get-WinEvent                       Microsoft.PowerShell.Diagnostics   Get-WinEvent...
Cmdlet          Get-WmiObject                      Microsoft.PowerShell.Management    Get-WmiObject...
Cmdlet          Get-WSManCredSSP                   Microsoft.WSMan.Management         Get-WSManCredSSP...
Cmdlet          Get-WSManInstance                  Microsoft.WSMan.Management         Get-WSManInstance...
Cmdlet          Group-Object                       Microsoft.PowerShell.Utility       Group-Object...
Cmdlet          Import-Alias                       Microsoft.PowerShell.Utility       Import-Alias...
Cmdlet          Import-Clixml                      Microsoft.PowerShell.Utility       Import-Clixml...
Cmdlet          Import-Counter                     Microsoft.PowerShell.Diagnostics   Import-Counter...
Cmdlet          Import-Csv                         Microsoft.PowerShell.Utility       Import-Csv...
Cmdlet          Import-LocalizedData               Microsoft.PowerShell.Utility       Import-LocalizedData...
Cmdlet          Import-Module                      Microsoft.PowerShell.Core          ...

我想要做的就是获取Get-Command返回的所有不同的ModuleName。 如何使用PowerShell执行此操作?

在伪C#中:

PowerShell.Exec("Get-Command").Select(a=> a.ModuleName).Distinct();

提前致谢!

trans by 2020-02-09T05:00:07Z

powershell-如何在程序包管理器控制台中“更新程序包”到以前的版本?

我的项目中安装了一个版本的软件包,但在测试过程中发现了问题。 我尝试了明显的操作Update-Package MyPackage -Version [an earlier version],但Update-Package cmdlet没有-Force参数,并且不允许更新到较早版本。 如何降级我的程序包依赖项(不利用源代码控制!)


注意:此问题现在不相关,因为Update-Package MyPackage -Version [an earlier version]在最新版本的NuGet软件包管理器中可以立即使用。 您甚至不需要-Force交换机。

trans by 2020-02-07T08:43:49Z

powershell-是否有Windows命令外壳将显示Unicode字符?

假设我安装了带有适当字形的字体,那么Windows XP的命令外壳是否将显示Unicode字符? 至少应该正确显示Unicode的两件事:

  • 目录列表。 我不在乎我要键入什么(dir,ls,get-childitem等),只要名称中带有Unicode字符的文件显示正确的字形,而不是不可打印的字符框即可。
  • 文本文件内容列表。 再说一次,对我来说,是否是“少”,“多”,“猫”,“狗”等并不重要,只要打印出字符即可。 我认识到由于文件的字符编码,这更加复杂,因此如果我必须在命令行上指定它对我来说很好。

到目前为止,这是我尝试过的方法:

  • 命令文件
  • Windows PowerShell; 包括多语言版本。
  • Cygwin重击

没运气。 我什至尝试为cmd / PowerShell安装自定义字体。 在某种程度上,PowerShell和cmd.exe可以识别Unicode,因为我可以将不可打印的框复制/粘贴到其中,并将其粘贴到具有正确字符的其他应用程序中。 Cygwin(?)似乎转换为? 字符,并通过复制/粘贴来实现。

有任何想法吗?

trans by 2020-02-06T10:19:48Z

如何从Powershell的catch块中抛出异常?

我是否应该以与.Net相同的方式进行异常处理?

然后,如何从Powershell的catch块中重新引发异常?

'throw'是enoungh或'throw $ _'会更好吗?

trans by 2020-02-05T14:49:19Z

将PowerShell脚本放在哪里?

(我不敢相信我实际上是在问这个问题,但我今天没有足够的智力。)

我刚刚编写了第一个认真的PowerShell脚本,对此我感到非常满意。 我计划每天左右使用它。 我希望能够从Posh命令行中调用它。 我给它指定一个动词-名词类型的名称,但是现在它是一个简单的.ps1,而不是那些带有params之类的高级功能之一。

那么,它应该去哪里?如何从Posh命令行中调用它? 我打算写更多! 他们应该去哪里?

  • 它应该是我个人资料中的功能吗?
  • 它应该走在我的路上吗?
  • 它是否进入PSMODULEPATH? 无论如何,那里有什么东西? 它是递归查找还是像普通PATH一样?

大家都将PowerShell脚本放在哪里,以及如何组织它们? 我在制作C#和C ++工具方面有很多经验,并且知道如何命名和放置它们。 在另一个极端,我做了很多糟糕的.bat文件,这些文件通常是独立的或堆放在某个文件夹的堆中。 但是PowerShell似乎有很大的不同。 您可以快速地在其中添加糟糕的.bat文件类型的东西,也可以使用它来构建库和复杂的服务。

我真的很喜欢在开始之前应该如何组织这些事情的一些想法。 显然每个人都不一样,所以我希望能进行一些讨论。 谢谢!

trans by 2020-02-04T23:10:37Z

如何从命令行运行Powershell脚本并传递目录作为参数

我的Powershell脚本Foo.ps1:

Function Foo($directory)
{
    echo $directory
}

if ($args.Length -eq 0)
{
    echo "Usage: Foo <directory>"
}
else
{
    Foo($args[0])
}

在Windows控制台中:

powershell -command .\Foo.ps1

结果为:“术语'。\ Foo.ps1'无法识别为cmdlet,函数,脚本文件或可运行程序的名称。请检查名称的拼写,或者是否包含路径,请验证该路径 是正确的,然后重试。”

尽管Foo.ps1位于我正在调用Powershell的当前目录中。 然后,我尝试调用它以指定脚本文件的完整路径。 因为该路径包含一个空格,所以我相信我必须以某种方式引用它。 另外,我需要向脚本传递一个参数,该参数也是一个包含一个或多个空格的文件名。 不管我尝试什么,我都无法正常工作。 到目前为止,这是我最好的猜测:

powershell -command "'C:\Dummy Directory 1\Foo.ps1' 'C:\Dummy Directory 2\File.txt'"

这将导致错误“表达式或语句中的意外令牌'C:\ Dummy目录2 \ File.txt'。在第1行:char:136”。

编辑:我想出了为什么

powershell -command .\Foo.ps1

不工作。 这是因为我的Microsoft.PowerShell_profile.ps1文件具有

CD C:\

因此,一旦Powershell启动,它就会更改目录。

trans by 2020-02-04T11:42:15Z

我可以在PowerShell中获取详细的异常stacktrace吗?

运行这样的脚本:

 1: function foo()
 2: {
 3:    bar
 4: }
 5: 
 6: function bar()
 7: {
 8:     throw "test"
 9: }
10: 
11: foo

我知道了

test
At C:\test.ps1:8 char:10

我可以获取详细的堆栈跟踪信息吗?

At bar() in C:\test.ps1:8
At foo() in C:\test.ps1:3 
At C:\test.ps1:11
trans by 2020-02-04T03:02:31Z

如何在PowerShell提示中显示当前的git分支名称?

基本上,我是这样做的,但是要使用PowerShell而不是bash。

我通过PowerShell在Windows上使用git。 如果可能的话,我希望当前的分支名称显示在命令提示符中。

trans by 2020-02-03T22:00:57Z

如何通过脚本在运行时检查PowerShell中是否存在cmdlet

我有一个需要在多个主机(PowerGUI,PowerShell ISE等)下运行的PowerShell脚本,但是我遇到了一个问题,即其中一个主机下有时不存在cmdlet。 有没有办法检查cmdlet是否存在,以便可以将代码包装在if块中,并在不存在时执行其他操作?

我知道我可以使用$host.name来区分应该在每台主机上运行的代码,但是我更喜欢使用功能检测,以防将来将来添加该cmdlet。

我也可以使用try / catch块,但是由于它在托管代码中运行,因此我认为可以检测是否通过代码安装了cmdlet。

trans by 2020-02-03T03:33:25Z

powershell-如何为采用单个数组参数的构造函数调用New-Object?

在PowerShell中,我想使用New-Object调用单参数.Net构造函数new X509Certificate2(byte[] byteArray)。问题是,当我使用powershell中的字节数组执行此操作时,我得到了

新对象:找不到“ X509Certificate2”的重载,并且参数计数为“ 516”。

trans by 2020-02-02T21:15:06Z

从另一个Powershell脚本加载变量

我有几个可能会重用变量的脚本,所以我想将变量隔离在自己的Variables.ps1脚本中,即

$var1 = "1"
$var2 = "2"

我正在尝试加载这些变量,然后像这样在Main.ps1脚本中将它们打印出来:

.\Variables.ps1
$var1
$var2

如果我先运行。\ Variables.ps1,则此方法有效,但是如果我仅运行Main.ps1,则无效。 我的环境是PowerShell ISE。 我究竟做错了什么?

trans by 2020-02-02T19:19:37Z

活动目录-Powershell v3.0管道发行

我在使用此命令时遇到麻烦:

gc .\domains.txt | Get-ADDomain

顾名思义,domains.txt包含要查询的Active Directory列表(所有域都在同一林中)。

如果我在Windows 8机器上运行它,则一切正常,并获得了预期的结果,而在具有WMF 3.0的Windows 2008 R2 SP1成员服务器(不是DC)上,我仅从列表中的第一个域获得结果,并且对于 其他:

Get-ADDomain : A referral was returned from the server

如果我使用以下命令查询列表中的域:

Get-ADDomain <Domain name here>

它工作正常。

我的工作站

Microsoft Windows 8企业版(6.2.9200)x64

PS D:\Tools\Powershell> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      3.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.18010
BuildVersion                   6.2.9200.16384
PSCompatibleVersions           {1.0, 2.0, 3.0}
PSRemotingProtocolVersion      2.2

服务器

Microsoft Windows Server 2008 R2标准SP1(6.1.7601)x64

PS C:\Tools\Powershell> $PSVersionTable

Name                           Value
----                           -----
WSManStackVersion              3.0
PSCompatibleVersions           {1.0, 2.0, 3.0}
SerializationVersion           1.1.0.1
BuildVersion                   6.2.9200.16398
PSVersion                      3.0
CLRVersion                     4.0.30319.269
PSRemotingProtocolVersion      2.2

更新资料

如果我在服务器上运行:

gc .\domains.txt | %{ Get-ADDomain $_ }

运行良好

跟踪

trace-command -Name ParameterBinding { "DOMAIN_1","DOMAIN_2" | Get-ADDomain } -PSHost

伺服器:[http://pastebin.com/sRVJHaCU]

工作站:[http://pastebin.com/kj3JV6nV]

提前致谢

trans by 2020-01-29T16:20:49Z

powershell-在NuGet软件包管理器中列出特定软件包的所有可用版本

哪个NuGet PowerShell命令将返回特定程序包所有版本的列表?

我已经尝试了以下方法,但是它只返回一个版本的NUnit以及许多其他(非)相关的软件包,每个软件包只有一个版本。

-AllVersions

注意:我指定源URI,因为我们有自己的内部包源作为默认远程服务器。

我的理解是-AllVersions开关应该拉回每个匹配包的每个版本。

我似乎无法弄清楚的是:

  1. 我做错了吗?
  2. 如果不是,项目维护者(或其他人)是否从软件包源中删除了较旧的版本?
  3. 如果是,为什么呢?
trans by 2020-01-29T13:09:43Z

1 2 3 4 5 6 7 8 9 10 11 12 13 下一页 共13页