我有两条路:
fred\frog
Run Code Online (Sandbox Code Playgroud)
和
..\frag
Run Code Online (Sandbox Code Playgroud)
我可以在PowerShell中将它们连接在一起,如下所示:
join-path 'fred\frog' '..\frag'
Run Code Online (Sandbox Code Playgroud)
这给了我这个:
fred\frog\..\frag
Run Code Online (Sandbox Code Playgroud)
但我不希望这样.我想要一个没有双点的标准化路径,如下所示:
fred\frag
Run Code Online (Sandbox Code Playgroud)
我怎么能得到它?
我有以下代码:
$DatabaseSettings = @();
$NewDatabaseSetting = "" | select DatabaseName, DataFile, LogFile, LiveBackupPath;
$NewDatabaseSetting.DatabaseName = "LiveEmployees_PD";
$NewDatabaseSetting.DataFile = "LiveEmployees_PD_Data";
$NewDatabaseSetting.LogFile = "LiveEmployees_PD_Log";
$NewDatabaseSetting.LiveBackupPath = '\\LiveServer\LiveEmployeesBackups';
$DatabaseSettings += $NewDatabaseSetting;
Run Code Online (Sandbox Code Playgroud)
当我尝试使用字符串执行命令中的一个属性时:
& "$SQlBackupExePath\SQLBackupC.exe" -I $InstanceName -SQL `
"RESTORE DATABASE $DatabaseSettings[0].DatabaseName FROM DISK = '$tempPath\$LatestFullBackupFile' WITH NORECOVERY, REPLACE, MOVE '$DataFileName' TO '$DataFilegroupFolder\$DataFileName.mdf', MOVE '$LogFileName' TO '$LogFilegroupFolder\$LogFileName.ldf'"
Run Code Online (Sandbox Code Playgroud)
它试图只使用值$DatabaseSettings而不是值$DatabaseSettings[0].DatabaseName,这是无效的.
我的解决方法是将其复制到一个新变量中.
如何直接在双引号字符串中访问对象的属性?
我有一个字符串中的路径,
"C:\ TEMP\mybackup.zip"
我想在该脚本中插入一个时间戳,例如,
"C:\ temp\mybackup 2009-12-23.zip"
在PowerShell中有一种简单的方法吗?
我在Windows 10 PC上使用Visual Studio Code.我想将我的默认终端从Windows PowerShell更改为Ubuntu上的Bash(在Windows上).
我怎样才能做到这一点?
多年来,我一直使用cmd/DOS/Windowsshell并将命令行参数传递给批处理文件.例如,我有一个文件,zuzu.bat并在其中,我访问%1,%2等等.现在,我想,当我叫做同样的PowerShell脚本when I am in a Cmd.exe shell.我有一个脚本,xuxu.ps1(我已经将PS1添加到我的PATHEXT变量和与PowerShell关联的PS1文件).但无论我做什么,我似乎都无法从$args变量中得到任何东西.它的长度始终为0.
如果我在PowerShellshell中,而不是cmd.exe,它可以工作(当然).但我还不够舒服,无法全时在PowerShell环境中生活.我不想打字powershell.exe -command xuxu.ps1 p1 p2 p3 p4.我想打字xuxu p1 p2 p3 p4.
这是可能的,如果是的话,怎么样?
我无法工作的样本很简单,foo.ps1:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
Run Code Online (Sandbox Code Playgroud)
结果总是如下:
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>
Run Code Online (Sandbox Code Playgroud) 我想用PowerShell为这个可执行文件创建一个快捷方式:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?
有没有办法通过将输出路由到一些'more'命令来对输出进行分页,这个命令可以在linux\unix shell中找到?
假设我在当前目录中有以下文件:
buildBar.bat
buildFoo.bat
buildHouse.bat
Run Code Online (Sandbox Code Playgroud)
然后我输入我的命令提示符下,./bu然后TAB.
在Bash中,它扩展到了 ./build
在PowerShell中,它会扩展为./buildBar.bat- 列表中的第一项.
在Cmd中,行为与PowerShell相同.
我更喜欢Bash行为 - 有没有办法让PowerShell表现得像Bash.
我需要在运行时在PowerShell脚本中显示所有已配置的环境变量.通常在显示环境变量时,我可以在shell中使用以下其中一种(除了其他技术,但这些很简单):
gci env:*
ls Env:
Run Code Online (Sandbox Code Playgroud)
但是,我从另一个程序调用了一个脚本,当我在脚本中使用上述调用之一时,而不是显示环境变量及其值,而是获取System.Collections.DictionaryEntry类型列表而不是变量及其值.在PowerShell脚本中,如何显示所有环境变量?