我已经看到PowerShell中使用的@符号来初始化数组.@符号究竟是什么意思,我在哪里可以阅读更多信息?
我正在尝试使用PowerShell脚本执行EXE文件.如果我使用命令行它没有问题(首先我提供可执行文件的名称和一系列参数来调用它):
"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode
Run Code Online (Sandbox Code Playgroud)
但是在脚本中执行完全相同的操作会返回错误:
术语 "C:\ Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe"C:\ temp\TestProject1\TestProject1.pjs/run/exit/SilentMode' 无法识别为cmdlet的名称,函数,脚本文件或可操作程序.检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试.
(我使用"&"运算符调用了命令.)
我该如何解决这个问题?
我们所有人都可能知道.bat批处理文件.
但是PowerShell 3脚本的文件扩展名是什么?
我发现了.ps1一些其他的结局,但它们仅适用于版本1.
我有这个单行:
get-WmiObject win32_logicaldisk -Computername remotecomputer
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
DeviceID : A:
DriveType : 2
ProviderName :
FreeSpace :
Size :
VolumeName :
DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 20116508672
Size : 42842714112
VolumeName :
DeviceID : D:
DriveType : 5
ProviderName :
FreeSpace :
Size :
VolumeName :
Run Code Online (Sandbox Code Playgroud)
如何获得Freespace和Size的DeviceID C:?我需要提取这两个值而没有其他信息.我用Selectcmdlet 尝试过,但没有效果.
编辑: 我只需要提取数值并将它们存储在变量中.
我只是不喜欢以下语法:
if (Test-Path $path) { ... }
Run Code Online (Sandbox Code Playgroud)
和
if (-not (Test-Path $path)) { ... }
if (!(Test-Path $path)) { ... }
Run Code Online (Sandbox Code Playgroud)
特别是在检查"不存在"这种常见用途时,括号太多且不易读.有什么更好的方法呢?
更新:我目前的解决方案是使用别名exist,并not-exist为解释在这里.
PowerShell存储库中的相关问题:https://github.com/PowerShell/PowerShell/issues/1970
我试图在Unix中复制"cat"命令的功能.
我想避免解决方案,我明确地将两个文件读入变量,将变量连接在一起,然后写出连接变量.
在交互式控制台中工作时,如果我定义一个新对象并为其分配一些属性值,如下所示:
$obj = New-Object System.String
$obj | Add-Member NoteProperty SomeProperty "Test"
Run Code Online (Sandbox Code Playgroud)
然后,当我在交互式窗口中键入我的变量名称时,Powershell为我提供了对象属性和值的摘要:
PS C:\demo> $obj
SomeProperty
------------
Test
Run Code Online (Sandbox Code Playgroud)
我基本上想要这样做,但是从脚本中的函数内部做.该函数创建一个对象并设置一些属性值,我希望它在返回之前将对象值的摘要打印到Powershell窗口.我尝试在函数中使用Write-Host:
Write-Host $obj
Run Code Online (Sandbox Code Playgroud)
但这只是输出对象的类型而不是摘要:
System.Object
Run Code Online (Sandbox Code Playgroud)
如何让我的函数输出对象属性值的摘要到Powershell窗口?
如果我想将两个字符串组合成文件路径,我使用Join-Path如下:
$path = Join-Path C: "Program Files"
Write-Host $path
Run Code Online (Sandbox Code Playgroud)
那打印"C:\Program Files".如果我想为两个以上的字符串执行此操作:
$path = Join-Path C: "Program Files" "Microsoft Office"
Write-Host $path
Run Code Online (Sandbox Code Playgroud)
Powershell抛出一个错误:
[string[]] $pieces = "C:", "Program Files", "Microsoft Office"
$path = Join-Path $pieces
Write-Host $path
Run Code Online (Sandbox Code Playgroud)
我尝试使用字符串数组:
C:\somepath
Program Files\somepath
Microsoft Office\somepath
Run Code Online (Sandbox Code Playgroud)
但是Powershell提示我输入子路径(因为我没有指定-childpath参数),例如"somepath",然后创建三个文件路径,
$path = Join-Path C: "Program Files"
Write-Host $path
Run Code Online (Sandbox Code Playgroud)
哪个也不对.
在PowerShell中是否存在空合并运算符?
我希望能够在powershell中执行这些c#命令:
var s = myval ?? "new value";
var x = myval == null ? "" : otherval;
Run Code Online (Sandbox Code Playgroud)