小编mkl*_*nt0的帖子

Applescript(osascript):在iTerm 2中打开分割窗格并执行命令

以下工作在iTerm 2中打开两个选项卡.

我似乎无法弄清楚如何使用拆分窗格来改变它.

我试过应用我在几个论坛上看到的东西,但它永远不会奏效.有人能指出我正确的方向吗?

osascript <<-eof
        tell application "iterm"
                set myterm to (make new terminal)
                tell myterm
                        launch session "Default session"
                        tell the last session
                                set name to "Server"
                                write text "cd $projectsFolder"
                        end tell
                        launch session "Default session"
                        tell the last session
                                set name to "Console"
                                write text "cd $projectsFolder"
                        end tell
                end tell
        end tell
eof
Run Code Online (Sandbox Code Playgroud)

terminal applescript osascript iterm

9
推荐指数
4
解决办法
1万
查看次数

在PowerShell中结合"Get-Disk"信息和"LogicalDisk"信息?

我有这个查询扫描所有逻辑磁盘信息:

Write-Host "Drive information for $env:ComputerName"

Get-WmiObject -Class Win32_LogicalDisk |
    Where-Object {$_.DriveType -ne 5} |
    Sort-Object -Property Name | 
    Select-Object Name, VolumeName, VolumeSerialNumber,SerialNumber, FileSystem, Description, VolumeDirty, `
        @{"Label"="DiskSize(GB)";"Expression"={"{0:N}" -f ($_.Size/1GB) -as [float]}}, `
        @{"Label"="FreeSpace(GB)";"Expression"={"{0:N}" -f ($_.FreeSpace/1GB) -as [float]}}, `
        @{"Label"="%Free";"Expression"={"{0:N}" -f ($_.FreeSpace/$_.Size*100) -as [float]}} |
    Format-Table -AutoSize
Run Code Online (Sandbox Code Playgroud)

输出是:

在此输入图像描述

但是 - 我正在查看物理磁盘信息及其分区/卷信息:

所以 - 对于物理磁盘我有这个命令:

Get-Disk

结果:

在此输入图像描述

题 :

我想在这两个命令之间进行组合.我想看到磁盘,在每个磁盘下面 - 它的逻辑磁盘信息:

  • 磁盘编号1:....(info)
    >其逻辑磁盘信息.....
  • 磁盘编号2:....(info)
    >这是逻辑磁盘信息.....
  • 磁盘编号3:....(info)
    >这是逻辑磁盘信息.....
  • 等等...

如何在这两个查询之间进行组合?

filesystems powershell drive

9
推荐指数
2
解决办法
3万
查看次数

在文件资源管理器中打开目录

在ms上,从node.js代码开始,如何c:\documents在Windows文件浏览器中打开特定目录(例如:)?

我想在c#中,它会是:

process.Start(@"c:\test")
Run Code Online (Sandbox Code Playgroud)

windows node.js

9
推荐指数
2
解决办法
8804
查看次数

New-WebBinding:无法检索cmdlet的动态参数

我们正在使用Windows 2012 Server R2.

我们正在尝试自动创建LetsEncrypt证书.我们正在使用LetsEncrypt-Win-Simple(https://github.com/Lone-Coder/letsencrypt-win-simple).

一旦创建了证书(通过LetsEncrypt.exe),我们就会调用一个.bat脚本(使用--script和--scriptparameters标志).这将运行powershell.exe并尝试创建必要的IIS绑定..bat文件中的行是:

powershell.exe -file c:\temp\SSLIISBinding.ps1 %1 %2 %3 %4
Run Code Online (Sandbox Code Playgroud)

%1-4是LetsEncrypt传入的args.在powershell脚本中,我们尝试运行的命令是:

$iis_host_name = $args[0]
$iis_site_name = $args[1]
$certificate_hash = $args[2]
$certificate_store = $args[3]

"IIS Host Name: " + $iis_host_name
"IIS Site Name: " + $iis_site_name
"Certificate Hash: " + $certificate_hash
"Certificate Store: " + $certificate_store

$guid = [guid]::NewGuid().ToString("B")
netsh http add sslcert hostnameport="${iis_host_name}:443" certhash=$certificate_hash certstorename=$certificate_store appid="$guid"
New-WebBinding -name $iis_site_name -Protocol https  -HostHeader $iis_host_name -Port 443 -SslFlags 1
Run Code Online (Sandbox Code Playgroud)

args传入.bat罚款,因为我们输出它们并且它们正确显示.

如果我们自己运行.bat文件,它就能完美运行.如果它被LetsEncrypt.exe调用则失败,报告以下问题:

New-WebBinding : Cannot retrieve the dynamic …
Run Code Online (Sandbox Code Playgroud)

windows powershell batch-file iis-8 lets-encrypt

9
推荐指数
1
解决办法
4440
查看次数

在powershell中使用7z解压文件

在powershell中使用7z解压缩文件的命令是什么?

set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"
sz x  $zipfilePath $destinationUnzipPath -aoa -r;
Run Code Online (Sandbox Code Playgroud)

该命令工作正常,但它说没有要处理的文件,一切正常而不是解压缩文件?

powershell 7zip

9
推荐指数
3
解决办法
3万
查看次数

如何在不截断值的情况下使用Format-Table?

我目前有一个脚本可以ping服务器并检查每台服务器上运行的服务的状态.

我使用Out-File保存输出,但PowerShell在长字符串后放置省略号或"...".我不希望它这样做.例如:

MachineName  ServiceName             Status StartType
-----------  -----------             ------ ---------
SrvGtw01     Test.MyService....       Running  
Run Code Online (Sandbox Code Playgroud)

我希望它显示如下全名:

MachineName  ServiceName              Status StartType
-----------  -----------              ------ ---------
SrvGtw01     Test.MyServiceName.Here  Stopped  Disabled
Run Code Online (Sandbox Code Playgroud)

我一直在阅读你可以设置$FormatEnumerationLimit偏好变量-1,我已经尝试过,但它没有用.我不确定如何将它放在我的脚本中.

powershell formatting powershell-2.0

9
推荐指数
1
解决办法
7331
查看次数

使用PowerShell时,Docker将图像保存为两倍大小 - 保存原始字节流

Docker版本18.03.1-ce,build 9ee9f40

我正在使用PowerShell在Windows上构建一个大项目.

发出命令时

docker save docker.elastic.co/kibana/kibana > deploy/kibana.docker
Run Code Online (Sandbox Code Playgroud)

我得到一个文件1.4Gb.

在CMD中运行的相同命令产生799Mb图像.

在bash中运行的相同命令产生799Mb图像.

CMD和Bash只需不到一分钟的时间来保存图像,而Powershell大约需要10分钟.

我无法在docker或MS docs中找到这种现象的正常解释.

现在"解决方案"是

Write-Output "Saving images to files"
cmd /c .\deploy-hack.cmd
Run Code Online (Sandbox Code Playgroud)

但我想找到实际的根本原因.

powershell cmd io-redirection docker

9
推荐指数
1
解决办法
192
查看次数

通过 Powershell 关闭时无法停止所有 Excel 进程

使用此代码,我打开 excel(使用visible = false,以便用户看不到它),写入工作簿,然后在脚本结束后打开 excel(使其可见)或完全关闭它而不保存。当我保存 Excel、使其保持打开状态、结束脚本,然后稍后手动关闭 Excel 时,任务管理器中没有后台进程。但是,当我使用脚本关闭 Excel 时,它仍保留在任务管理器中。

以下是我开始使用 Excel 的方法:

    $script:excel = new-object -ComObject excel.application # create excel object
    $excel.visible = $false # hide excel window
    $script:workbook = $excel.Workbooks.Add() # add excel file
    $script:ws1 = $workbook.Worksheets.Item(1) # create new sheet
Run Code Online (Sandbox Code Playgroud)

这是我关闭它的方法:

        [gc]::Collect()
        [gc]::WaitForPendingFinalizers()
        if ($script:closeOnX) {
            #only do this if not keeping excel open
            Write-Host "Closing Excel"
            $excel.Quit()
        }
        [System.Runtime.InteropServices.Marshal]::ReleaseComObject($excel)
Run Code Online (Sandbox Code Playgroud)

closeOnX 只是一个标志,因此它仅在某些情况下实际关闭 Excel 应用程序。其余部分在每次脚本结束时执行。

当我结束脚本并同时关闭 Excel 时,我只想关闭当前的 Excel 进程(这就是我不想停止进程的原因),而不关闭用户可能正在处理的其他工作簿。

当我结束脚本、保存并打开 Excel 时,我希望当用户手动关闭 Excel 时所有进程都消失。(这是工作)

com excel powershell user-interface rcw

9
推荐指数
1
解决办法
4252
查看次数

powershell 选择对象属性和扩展属性

尝试执行选择对象,但我似乎无法从键值列表属性返回属性和值。我希望从此参数属性返回 RunStart、Message 和“tableName”3 个属性。

我对此感到太多了:

|Select-Object -Property Parameters,RunStart,Message

Parameters                                    RunStart              Message
----------                                    --------              -------
{[tableName, AHROR012], [schemaName, dbo]...} 11/14/2019 5:39:06 PM Operation on target failed
Run Code Online (Sandbox Code Playgroud)

但当我这样做时,我没有收到 RunStart 或消息:

|Select-Object -ExpandProperty Parameters -Property tableName,RunStart,Message

Key                 Value
---                 -----
tableName           AHROR012
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能得到:

Parameters.tableName                         RunStart              Message
----------                                    --------              -------
AHROR012                                      11/14/2019 5:39:06 PM Operation on target failed
Run Code Online (Sandbox Code Playgroud)

谢谢!!!

powershell select-object

9
推荐指数
1
解决办法
2万
查看次数

Windows NTFS 和区分大小写

根据维基百科, NTFS 允许使用不同大小写的两个相似名称(如 Readme.txt 与 readme.txt),并且只能由 windows 文件 API 阻止。

当前的 Windows 文件系统,如 NTFS,区分大小写;即 readme.txt 和 Readme.txt 可以存在于同一目录中。但是,Windows 应用程序中用于文件访问的 API 不区分大小写,这使得从应用程序的角度来看文件名不区分大小写。因此,应用程序只能访问文件名只是大小写不同的文件之一,如果提供的文件名不明确,某些命令可能会失败

来自 Linux,我问自己这两个文件存在的可能性是什么,并且一个人只能访问其中一个文件,这使其成为安全的理想问题。“Windows API”是什么意思。还有其他方法可以访问那些重复的文件吗?可以直接使用磁盘驱动程序(格式化驱动程序)访问文件系统吗?

windows filesystems ntfs

8
推荐指数
2
解决办法
7920
查看次数