小编Aar*_*sen的帖子

确定当前PowerShell脚本位置的最佳方法是什么?

每当我需要引用一个公共模块或脚本时,我喜欢使用相对于当前脚本文件的路径,这样,我的脚本总能找到库中的其他脚本.

那么,确定当前脚本目录的最佳标准方法是什么?目前,我正在做:

$MyDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
Run Code Online (Sandbox Code Playgroud)

我知道在模块(.psm1)中你可以使用它$PSScriptRoot来获取这些信息,但这不会在常规脚本(即.ps1文件)中设置.

获取当前PowerShell脚本文件位置的规范方法是什么?

powershell powershell-2.0

492
推荐指数
11
解决办法
46万
查看次数

如何查找SQL Server实例的数据目录?

我们有一些大型数据库(20GB +),其中大部分都包含静态查找数据.因为我们的应用程序对这些数据库中的表执行连接,所以它们必须是每个开发人员本地SQL Server的一部分(即它们不能托管在中央的共享数据库服务器上).

我们计划复制一组规范的实际SQL Server数据库文件(*.mdf和*.ldf)并将它们附加到每个开发人员的本地数据库.

找出本地SQL Server实例的数据目录的最佳方法是什么,以便我们可以将文件复制到正确的位置?这将通过自动化过程完成,因此我必须能够从构建脚本中查找和使用它.

sql sql-server sql-server-2005 sql-server-2008 sql-server-2008-r2

68
推荐指数
7
解决办法
12万
查看次数

如何为Powershell脚本参数显示帮助消息?

我有一个powershell脚本(setup.ps1),我们将其用作开发环境设置脚本的入口点.它需要一个参数:

param(
    [Parameter(Position=0,HelpMessage="The targets to run.")]
    [Alias("t")]
    [string[]]
    $Targets = "Help"
)
Run Code Online (Sandbox Code Playgroud)

我跑的时候

PS > get-help .\setup.ps1 -detailed
Run Code Online (Sandbox Code Playgroud)

在参数部分,我的帮助消息没有出现:

PARAMETERS
    -Targets <String[]>
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能显示参数帮助消息?

powershell powershell-2.0

60
推荐指数
3
解决办法
7万
查看次数

PowerShell的Get-ChildItem cmdlet返回的"模式"值有哪些?

当我在目录(或任何返回文件系统项的cmdlet)上运行PowerShell的Get-ChildItem时,它会显示一个名为的列Mode,如下所示:

    Directory: C:\MyDirectory


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----          2/8/2011  10:55 AM            Directory1
d----          2/8/2011  10:54 AM            Directory2
d----          2/8/2011  10:54 AM            Directory3
-ar--          2/8/2011  10:54 AM        454 File1.txt
-ar--          2/8/2011  10:54 AM       4342 File2.txt
Run Code Online (Sandbox Code Playgroud)

我搜索并搜索了Google和我当地的PowerShell书籍,但我找不到任何有关该Mode列含义的文档.

Mode列的可能值是什么,每个值是什么意思?

powershell

50
推荐指数
3
解决办法
5万
查看次数

IIS 7未提供默认文档

我们在某些开发人员工作站上遇到问题:访问没有文件名的URL(例如http:// localhost /)时,IIS 7会返回404错误.每个人都在运行Windows 7/IIS 7.5和ASP.NET 4.0.应用程序池配置为使用经典管道模式.

默认文档已启用,default.aspx位于默认文档列表中.

我启用了失败的请求跟踪,并在日志中看到:

OldHandlerName="", NewHandlerName="ExtensionlessUrl-ISAPI-4.0_64bit", 
  NewHandlerModules="IsapiModule", 
  NewHandlerScriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll", NewHandlerType=""
Run Code Online (Sandbox Code Playgroud)

后来,我看到这个IsapiModule拒绝了这个请求:

ModuleName="IsapiModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="404",
  HttpReason="Not Found", HttpSubStatus="0", 
  ErrorCode="The operation completed successfully. (0x0)", ConfigExceptionInfo="" 
Run Code Online (Sandbox Code Playgroud)

看起来IIS认为ExtensionlessUrl-ISAPI-4.0-64bit应该处理请求.当我查看该模块的配置时,它表明它应该匹配路径*.,所以我很困惑为什么它匹配没有路径.

谷歌搜索从2005 年开始在IIS.net论坛上发布这篇文章.不幸的是,没有提供解决方案,只是对问题的确认.

当我更新我的应用程序池以使用集成模式时,问题就消失了. 不幸的是,它必须以经典模式运行.

如何让IIS再次为我们的默认文档服务呢?

iis-7.5

19
推荐指数
2
解决办法
3万
查看次数

在Powershell中调用批处理脚本时如何传递等号?

我们有一个批处理文件来调用我们基于MSBuild的构建过程.句法:

build App Target [ Additional MSBuild Arguments ]
Run Code Online (Sandbox Code Playgroud)

在内部,它这样做:

msbuild.exe %1.msbuild /t:%2 %3 %4 %5 %6 %7 %8 %9
Run Code Online (Sandbox Code Playgroud)

这导致对MSBuild的调用如下所示:

msbuild.exe App.msbuild /t:Target

当任何参数包含等号时=,Powershell会完全删除它. 我的批处理脚本永远不会看到它 标准cmd.exe命令提示符不会发生这种情况.

例如,如果我打电话

build App Target "/p:Property=Value"
Run Code Online (Sandbox Code Playgroud)

这是传递给MSBuild的内容:

msbuild.exe App.msmbuild /t:Target /p:Property Value
Run Code Online (Sandbox Code Playgroud)

我期待这个:

msbuild.exe App.msbuild /t:Target "/p:Property=Value"
Run Code Online (Sandbox Code Playgroud)

我尝试过Powershell转义字符,标准的命令提示符转义字符,甚至是我编写的东西:

build App Target "/p:Property=Value"
build App Target '/p:Property=Value'
build App Target /p:Property^=Value
build App Target /p:Property`=Value
build App Target /p:Property==Value
Run Code Online (Sandbox Code Playgroud)

它都不起作用. 我怎么办才能让等号不被删除或删除?

powershell batch-file

16
推荐指数
2
解决办法
1万
查看次数

PowerShell首次出现子串/字符时拆分字符串

我有一个字符串,我想分成2件.第一部分在逗号(,)之前,第二部分是逗号之后的所有内容(包括逗号).

我已经设法在变量中的逗号之前检索第一个部分$Header,但我不知道如何comma在一个大字符串中的第一个之后检索它们,因此它包含

$Content = "Text 1,Text 2,Text 3,Text 4," 
Run Code Online (Sandbox Code Playgroud)

这里可能会显示更多文字,例如文字5,文字6,...

$String = "Header text,Text 1,Text 2,Text 3,Text 4,"

$Header = $String.Split(',')[0] //<-- $Header = "Header text"
Run Code Online (Sandbox Code Playgroud)

string powershell split

13
推荐指数
1
解决办法
4万
查看次数

如何让PowerShell ISE对具有自定义扩展名的文件进行语法突出显示?

我想开始为我的一些Powershell脚本使用自定义扩展,但是当我将它们拖到PowerShell ISE中时,它们被视为纯文本,并且我没有得到任何语法突出显示.有什么办法可以让ISE将我的自定义文件扩展名识别为PowerShell脚本吗?

powershell powershell-ise

12
推荐指数
1
解决办法
1565
查看次数

在我的MSBuild脚本中获取当前日志记录详细级别

我们的MSBuild脚本使用Exec任务来调用一些命令行应用程序.这些应用程序中的大多数都有自己的输出详细程度设置,我希望这些设置与调用它们的MSBuild脚本的详细级别相同.

有没有办法让我获得MSBuild进程的日志记录详细级别?

我以为我可以编写一个自定义任务来处理这个问题,但是在MSBuild API上查找,我找不到任何可以给我详细程度的属性或类.

msbuild

11
推荐指数
1
解决办法
2162
查看次数

如何打开Neo4J Webadmin进行远程控制?

我在我的服务器端口7474上安装了一个Neo4J实例.我的域名也在使用该服务器,我希望webadmin远程使用用户名和密码,如下所示:

example.com:7474
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?我在Neo4J文档中找不到任何指南.

administration remote-access neo4j

11
推荐指数
1
解决办法
8733
查看次数