是否有替代 tmux/screen 的方法可以在 Windows 上使用 Powershell?我知道 Powerscreen,但它似乎已经死了很长时间。Cygwin 不能与 Powershell 一起使用,是吗?Console2是很普城域网解决方案。
还有什么想法吗?
在我的 Ubuntu 机器上,我只是使用 Keychain 来维护一个保持登录状态的 ssh-agent。
我想要类似于 Windows 上的东西,因为 OpenSSH 是本机包含的。我正在使用带有众所周知的if [ -z "$SSH_AUTH_SOCK" ] ; then ...脚本的Git Bash,但这导致许多 ssh 代理被打开,我知道有人建议不要这样做(部分原因是这篇博文:http : //rabexc.org/posts/pitfalls-of-ssh -agents ) - 这就是让我获得 Ubuntu 钥匙串的原因。不再使用它的另一个原因是我正在将 PowerShell 作为我的主要 shell。
但我不确定如何在 Windows 上专门使用 PowerShell和Win32-OpenSSH实现同样的事情。
谢谢!
每次打开 powershell 时,如何将默认主目录更改为“C:\Users\khornsby”?
我正在运行 Windows 7。以下是有关我的环境状态的信息。
Windows PowerShell 版权所有 (C) 2009 Microsoft Corporation。版权所有。 PS P:\> cd ~ PS P:\>echo $HOME P:\ 附注:\> HOME="C:\Users\khornsby" 术语 'HOME=C:\Users\khornsby' 不被识别为 cmdlet 的名称, 函数、脚本文件或可运行的程序。检查名称的拼写,或 如果包含路径,请验证路径是否正确,然后重试。 在行:1 字符:25 + HOME="C:\用户\khornsby" 附注:\> Set-Variable HOME "C:\Users\khornsby" 设置变量:无法覆盖变量 HOME,因为它是只读的或 持续的。 在行:1 字符:13 + 设置变量 附注:\> dir env:home* 名称值 ---- ----- 主路径\ 家庭驱动器 P: HOMESHARE \\fileserv\khornsby$ 附注:\>
默认情况下,Windows 中的 PowerShell 似乎输出 UTF-16(例如,如果我执行简单的echo hello > hi.txt,hi.txt则以 UTF-16 结束)。我知道我可以通过代替执行将其强制为我想要的文本编码echo hello | out-file -encoding utf8 hi.txt,但我希望它只是我使用重定向运算符时的默认值。有没有办法实现这一目标?
我正在尝试递归获取文件夹的子项。但是该文件夹包含噪声文件和文件夹(实际上,这是一个 Visual Studio 项目文件夹)。
这是我所拥有的:
$root = Get-Item C:\Projects\MyProject
$allItems = Get-ChildItem $root -Recurse -exclude "**\pkgobj\*"
Run Code Online (Sandbox Code Playgroud)
但是,$allItems仍然包含与路径匹配的文件和文件夹。
我做错了什么?
更准确地说,我想同时获取文件夹和文件,而不是指定的文件夹及其任何后代。
我也试过:
foreach($item in $allItems){
if($item.FullName -notmatch "pkgobj") {
Write-Host -ForegroundColor Green $item.FullName.Replace($root,'')
}
}
Run Code Online (Sandbox Code Playgroud)
但没有更多的成功
我经常通过 SSH 登录的其中一台服务器更改了它的 IP 地址。所以,现在当我尝试通过 Windows Powershell 和 OpenSSH for Windows 使用 SSH 时,我收到了中间人攻击警告。
在 linux 机器上,我只会从~/.ssh/known_hosts. 但是,该~/.ssh目录似乎是空的。
Powershell/OpenSSH 的 known_hosts 文件在哪里?我已签入C:\Program Files\OpenSSH\home\anschauung\.ssh,但该文件夹也是空的。
我正在尝试在 Windows 10 上编写一个批处理文件,该文件允许我在运行时在耳机和扬声器之间切换作为默认音频设备。我不想使用任何第三方软件。
我尝试四处搜索,但我只找到了似乎不起作用的旧脚本,并且还引用了HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Volume Control\一条似乎不再存在的路径。我在 Windows 10 寄存器上找不到任何关于此的信息,如果我不确定自己在做什么,我也不喜欢过多地摆弄寄存器。
我已经成功地使用Invoke-WebRequest从 PowerShell 向基于 REST 的 API 发布请求。
Invoke-WebRequest -UseBasicParsing https://my-rest-api.com/endpoint -ContentType "application/json" -Method POST -Body $json
Run Code Online (Sandbox Code Playgroud)
今天我遇到了Invoke-RestMethod听起来更贴切地命名我正在做的事情。有什么区别,是否有理由使用一个而不是另一个?
我正在尝试获取目录中所有 XSL 和 XSLT 文件的列表。
dir -recurse -filter *.xsl,*.xslt -name
Run Code Online (Sandbox Code Playgroud)
但出现以下错误:
Get-ChildItem:无法将“System.Object[]”转换为参数“Filter”所需的类型“System.String”。不支持指定的方法。
dir -recurse -filter *.xsl -filter *.xslt -name
Run Code Online (Sandbox Code Playgroud)
但是得到了这个错误:
Get-ChildItem:无法绑定参数,因为多次指定了参数“过滤器”。要为可以接受多个值的参数提供多个值,请使用数组语法。例如,“-parameter value1,value2,value3”。
我可以用一个命令列出两个文件扩展名吗?
powershell ×10
windows ×4
windows-10 ×3
ssh ×2
api ×1
audio ×1
cmd.exe ×1
cygwin ×1
http ×1
openssh ×1
redirection ×1
tmux ×1
web ×1
windows-7 ×1