每当我需要引用一个公共模块或脚本时,我喜欢使用相对于当前脚本文件的路径,这样,我的脚本总能找到库中的其他脚本.
那么,确定当前脚本目录的最佳标准方法是什么?目前,我正在做:
$MyDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
Run Code Online (Sandbox Code Playgroud)
我知道在模块(.psm1)中你可以使用它$PSScriptRoot来获取这些信息,但这不会在常规脚本(即.ps1文件)中设置.
获取当前PowerShell脚本文件位置的规范方法是什么?
我们有一些大型数据库(20GB +),其中大部分都包含静态查找数据.因为我们的应用程序对这些数据库中的表执行连接,所以它们必须是每个开发人员本地SQL Server的一部分(即它们不能托管在中央的共享数据库服务器上).
我们计划复制一组规范的实际SQL Server数据库文件(*.mdf和*.ldf)并将它们附加到每个开发人员的本地数据库.
找出本地SQL Server实例的数据目录的最佳方法是什么,以便我们可以将文件复制到正确的位置?这将通过自动化过程完成,因此我必须能够从构建脚本中查找和使用它.
sql sql-server sql-server-2005 sql-server-2008 sql-server-2008-r2
我有一个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)
我需要做什么才能显示参数帮助消息?
当我在目录(或任何返回文件系统项的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列的可能值是什么,每个值是什么意思?
我们在某些开发人员工作站上遇到问题:访问没有文件名的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再次为我们的默认文档服务呢?
我们有一个批处理文件来调用我们基于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)
它都不起作用. 我怎么办才能让等号不被删除或删除?
我有一个字符串,我想分成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) 我想开始为我的一些Powershell脚本使用自定义扩展,但是当我将它们拖到PowerShell ISE中时,它们被视为纯文本,并且我没有得到任何语法突出显示.有什么办法可以让ISE将我的自定义文件扩展名识别为PowerShell脚本吗?
我们的MSBuild脚本使用Exec任务来调用一些命令行应用程序.这些应用程序中的大多数都有自己的输出详细程度设置,我希望这些设置与调用它们的MSBuild脚本的详细级别相同.
有没有办法让我获得MSBuild进程的日志记录详细级别?
我以为我可以编写一个自定义任务来处理这个问题,但是在MSBuild API上查找,我找不到任何可以给我详细程度的属性或类.
我在我的服务器端口7474上安装了一个Neo4J实例.我的域名也在使用该服务器,我希望webadmin远程使用用户名和密码,如下所示:
example.com:7474
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?我在Neo4J文档中找不到任何指南.
powershell ×6
batch-file ×1
iis-7.5 ×1
msbuild ×1
neo4j ×1
split ×1
sql ×1
sql-server ×1
string ×1