标签: powershell

确定已安装的PowerShell版本

如何确定计算机上安装的PowerShell版本,实际上是否已安装?

powershell

2543
推荐指数
16
解决办法
286万
查看次数

PowerShell说"在这个系统上禁用了脚本的执行."

我正在尝试运行从命令提示符调用PowerShell脚本的.cmd文件,我收到以下错误:

无法加载Management_Install.ps1,因为在此系统上禁用了脚本的执行.

我跑了cmd.exe,当我Management_Install.ps1从PowerShell 运行时,我Get-ExecutionPolicy回来了.

// Powershell的输出

PS C:\ Users\Administrator> get-executionpolicy

无限制

//从DOS输出

C:\ Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scr

ipts> powershell.\ Management_Install.ps1 1

警告:运行x86 PowerShell ...

无法加载文件C:\ Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1,因为在此系统上禁用了脚本的执行.有关详细信息,请参阅"get-help about_signing".

在线:1个字符:25

  • .\ Management_Install.ps1 <<<< 1

    • CategoryInfo:NotSpecified:(:) [],PSSecurityException

    • FullyQualifiedErrorId:RuntimeException

C:\ Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts> pause

按任意键继续 ...

该系统是Windows Server 2008 R2.

我究竟做错了什么?

powershell windows-server-2008-r2

1545
推荐指数
30
解决办法
193万
查看次数

913
推荐指数
8
解决办法
79万
查看次数

如何运行PowerShell脚本

如何运行PowerShell脚本?

  • 我有一个名为myscript.ps1的脚本
  • 我已经安装了所有必要的框架
  • 我设置了执行策略的东西
  • 我已按照此MSDN帮助页面上的说明操作, 并尝试按以下方式运行:( powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'有或没有--noexit)

除了输出文件名外,它什么都不返回.

没有错误,没有消息,没有.哦,当我添加时-noexit,同样的事情发生了,但我仍然在PowerShell中,必须手动退出.

.ps1文件应该运行程序并返回依赖于该程序输出的错误级别.但我很确定我还没有到达那里.

我究竟做错了什么?

windows powershell scripting

662
推荐指数
13
解决办法
166万
查看次数

设置Windows PowerShell路径变量

我发现设置PATH环境变量只影响旧的命令提示符.PowerShell似乎有不同的环境设置.如何更改PowerShell(v1)的环境变量?

注意:

我希望永久更改我的更改,因此每次运行PowerShell时都不必设置它.PowerShell有配置文件吗?像Unix上的Bash配置文件?

windows powershell

558
推荐指数
16
解决办法
56万
查看次数

如何在PowerShell中连接字符串和变量?

假设我有以下代码段:

$assoc = New-Object psobject -Property @{
    Id = 42
    Name = "Slim Shady"
    Owner = "Eminem"
}

Write-host $assoc.Id + "  -  "  + $assoc.Name + "  -  " + $assoc.Owner
Run Code Online (Sandbox Code Playgroud)

我希望这段代码显示:

42 - Slim Shady - Eminem

但相反它显示:

42 + - + Slim Shady + - + Eminem

这让我觉得+运算符不适合连接字符串和变量.

您应该如何使用PowerShell进行此操作?

powershell string-concatenation

529
推荐指数
17
解决办法
115万
查看次数

确定当前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万
查看次数

如何在PowerShell中处理命令行参数

处理命令行参数的"最佳"方法是什么?

似乎对"最佳"方式有几个答案,因此我坚持如何处理如下简单的事情:

script.ps1 /n name /d domain
Run Code Online (Sandbox Code Playgroud)

script.ps1 /d domain /n name.
Run Code Online (Sandbox Code Playgroud)

有没有一个可以更好地处理这个问题的插件?我知道我在这里重新发明轮子.

显然我已经不是很漂亮而且肯定不是"最好的",但它确实有效..而且它是UGLY.

for ( $i = 0; $i -lt $args.count; $i++ ) {
    if ($args[ $i ] -eq "/n"){ $strName=$args[ $i+1 ]}
    if ($args[ $i ] -eq "-n"){ $strName=$args[ $i+1 ]}
    if ($args[ $i ] -eq "/d"){ $strDomain=$args[ $i+1 ]}
    if ($args[ $i ] -eq "-d"){ $strDomain=$args[ $i+1 ]}
}
Write-Host $strName
Write-Host $strDomain
Run Code Online (Sandbox Code Playgroud)

powershell command-line-arguments

464
推荐指数
1
解决办法
64万
查看次数

如何将参数传递给PowerShell脚本?

有一个PowerShell名为的脚本itunesForward.ps1使iTunes快进30秒:

$iTunes = New-Object -ComObject iTunes.Application

if ($iTunes.playerstate -eq 1)
{
  $iTunes.PlayerPosition = $iTunes.PlayerPosition + 30
}
Run Code Online (Sandbox Code Playgroud)

它使用快速行命令执行:

powershell.exe itunesForward.ps1
Run Code Online (Sandbox Code Playgroud)

是否可以从命令行传递参数并将其应用于脚本而不是硬编码的30秒值?

powershell command-line automation itunes argument-passing

408
推荐指数
6
解决办法
61万
查看次数

如何将多个参数传递到PowerShell中的函数?

如果我有一个接受多个字符串参数的函数,则第一个参数似乎获取分配给它的所有数据,其余参数作为空传入.

快速测试脚本:

Function Test([string]$arg1, [string]$arg2)
{
    Write-Host "`$arg1 value: $arg1"
    Write-Host "`$arg2 value: $arg2"
}

Test("ABC", "DEF")
Run Code Online (Sandbox Code Playgroud)

生成的输出是

$arg1 value: ABC DEF
$arg2 value: 
Run Code Online (Sandbox Code Playgroud)

正确的输出应该是:

$arg1 value: ABC
$arg2 value: DEF
Run Code Online (Sandbox Code Playgroud)

这似乎在多台机器上的v1和v2之间是一致的,所以很明显,我做错了.任何人都可以指出究竟是什么?

powershell

406
推荐指数
11
解决办法
55万
查看次数