标签: powershell

Powershell 最终阻止在 Windows 任务计划程序中执行

我正在运行 Windows 任务计划程序任务:

Powershell 
-command C:\file.ps1  2>&1 > c:\test.log
Run Code Online (Sandbox Code Playgroud)

file.ps1包含

Try{
    echo "a"
    sleep 5
    echo "b"
}
Finally{
    echo "c"
}
Run Code Online (Sandbox Code Playgroud)

当我手动启动任务并等待其完成时,test.log 包含“abc”。但是当我通过手动退出(“结束”按钮)来中断它时,它只包含“a”。

我认为Finally甚至是在退出 powershell 脚本时运行?我的预期结果是“ac”

powershell scheduled-tasks task-scheduler

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

如何通过命令行禁用仅存在于“任务管理器启动”选项卡中的启动程序?

搜索网络会产生大量关于Get/Set-Servicewmicscmsconfig 和任务管理器本身的 GUI 选项,但我需要设置 Windows 计算机的无人值守安装,因此需要通过命令行禁用这些启动程序。

要查找这些应用程序,请打开任务管理器并单击启动选项卡。您将看到设置为“启用”或“禁用”的应用程序列表及其启动影响。

例如,我试图阻止启动的应用程序是 Citrix 和 KeePass。

PowerShell的Get-Service命令不显示这些服务。运行时sc query不显示这些服务,wmic startup也不会显示这些服务。我不知道如何通过命令行禁用这些。

powershell command-line win10-fast-startup

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

PowerShell/Windows 中不稳定的大小单位

我刚刚意识到,在 PowerShell(甚至一般的 Windows 环境)中,大小单位是这样看待的:

1mb ... 1048576 ......... not 1000000
1gb ... 1073741824 ...... not 1000000000
1tb ... 1099511627776 ... not 1000000000000
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释这种疯狂吗?为什么在世界上被1mb认为是1048576而不是1000000

windows powershell hard-drive prefix

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

如何使用 PowerShell 启用新的可选功能?

在 Windows 10 版本 20H2 中,它似乎MSPaint.exe已成为“可选功能”,但在旧版可选功能中找不到它。它仅在新Settings应用程序中可见。

同样,当您运行时,Get-WindowsOptionalFeature -Online | Format-Table您不会看到新的可选功能。

我尝试过运行:

Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft Paint" -All -LogLevel WarningsInfo
Run Code Online (Sandbox Code Playgroud)

我得到

Enable-WindowsOptionalFeature :功能名称 Microsoft Paint 未知。

我可以通过 GUI 手动启用可选功能,但如果我想将绘制推送到一组计算机怎么办?我们需要一个新的 PowerShell 命令吗?或者我们是否正在等待 Microsoft 将新的可选功能添加到 cmdlet?

powershell windows-10-v20h2

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

如何使用命令行工具(ffmpeg 和 powershell)连接视频文件?

如何从 Windows 命令行或 Powershell 使用 ffmpeg 连接两个或多个视频文件?

powershell ffmpeg

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

如何从命令行启动 WSL Ubuntu“控制台”

我正在努力从命令行(例如 PowerShell 或 CMD)启动 WSL“Ubuntu 20.04”商店应用程序(或任何商店应用程序)。

当我从“开始”菜单运行 Ubuntu 20.04 时,它会在一个带有 Ubuntu 图标和正确窗口标题(“Ubuntu 20.04 LTS”)的窗口中启动。我希望从命令行启动时获得相同的应用程序窗口。

我已经搜索了很多,并找到了引用的页面start shell:AppsFolder\{folder}!App(例如start shell:AppsFolder\Microsoft.WindowsStore_8wekyb3d8bbwe!App),但我无法使其适用于 Ubuntu Store 应用程序。我觉得这有点复杂——有没有更简单的方法?如果不是,那么 Ubuntu 上是如何工作的呢?

我熟悉该wsl命令,但如果我wsl -d Ubuntu-20.04从“开始”菜单运行,生成的窗口将具有通用 WSL/Linux/Penguin 图标,而不是 Ubuntu 图标。窗口标题也不C:\Windows\system32\wsl.exe是“Ubuntu 20.04 LTS”。

如果我从 CMD 运行相同的wsl命令,它仍然具有 CMD 图标。

也许我可以使用 DOS/CMDTITLE命令,但我只想有一个可用于启动 Store 应用程序的命令。这可能吗?

相比之下,“普通” .exeWindows 应用程序可以很容易地从 CMD 或 PowerShell 启动。

我对 Ubuntu WSL 的解决方案感到非常满意,而且如果有一种简单(尤其是可编程)的方式来运行所有Windows 应用商店应用程序,那就太好了。

windows powershell windows-store cmd.exe windows-subsystem-for-linux

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

如何使用 Powershell 将名称格式为“数字[空格]名称带空格”的所有文件重命名为“数字[连字符]名称带空格”?

我有很多名称格式为“数字[空格]名称带空格”或“(数字)[空间]名称带空格”的文件,例如:

23 文件名 23 带空格.txt
(47) 文件名 47 带空格.txt

它们分为几个目录,我需要它们的格式为“带空格的数字连字符名称”,例如:

23-文件名 23 带空格.txt
47-文件名 47 带空格.txt

我对递归查找文件然后在有固定模式时重命名它们的命令没有问题:

get-childitem -filter "*pattern*" -recurse | rename-item -newname {$_.Name -replace "pattern", "new string"}
Run Code Online (Sandbox Code Playgroud)

我正在努力解决正则表达式(?)或通配符需要 a)找到文件,然后,更重要的是,b)进行更新。

只要重命名不处理与模式不匹配的文件,那么 a) 部分就不那么重要了。

powershell regex rename wildcards

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

去除所有 ACL 的 Windows NTFS 磁盘

现在,当您购买 Windows PC 时,您实际上并不“拥有”整个磁盘......

每个文件夹上都有如此多的 ACL,以至于您实际上只能通过一系列复杂的操作来访问其中的某些部分,这些操作需要的技能远远超出普通 PC 用户的水平。您必须深入到可通过隐藏按钮访问的深埋对话框。您必须了解您必须在层次结构的哪个级别拥有所有权,删除 ACL 等……
但是当您想到它时,那就是您的PC,这就是 PC 的“P”最初代表的含义……
所以我我正在考虑剥离我刚购买的所有 ACL 的磁盘并保留标准文件保护做基本的保护工作......就像上个世纪 Windows 过去所做的一样......(在我 chmod -R 777 之前;-)

有没有人已经这样做了并且仍然在合理的时间内以合理的良好状态幸存下来?

有什么技术建议可以做到这一点?Powershell 脚本?使用 iCACLS 的基本脚本?

windows ntfs powershell acl cacls

0
推荐指数
1
解决办法
2358
查看次数

如何使用 PowerShell 2?

我主要在 Windows 7 机器上工作;有时在 Windows 2003 R2 服务器或 Windows 2008 R2 服务器上。我的理解是 Windows 7 和 Windows 2008 都带有 PowerShell 2,也许 Windows 2003 带有 PowerShell 2。但是,当我执行 Run | Powershell,PowerShell 运行所在窗口的标题显示它使用 PowerShell 的版本 1。我如何运行版本 2?

windows-7 powershell

0
推荐指数
1
解决办法
326
查看次数

Bash 脚本:在重新执行之前杀死实例

我有一个批处理脚本,用于快速启动我的开发环境。看起来像这样

:: Update checkout
git pull
:: Compile code with Maven
call mvn clean install -Pui
:: File for a program called Free File Synch which persists changes from one
:: part of the file system (my checkout) to another (the static cache generated
:: by Maven)
source-to-server.ffs_real

:: Navigate to the front-end
cd .\target\frontend
:: Serve to localhost
python -m SimpleHTTPServer 80
Run Code Online (Sandbox Code Playgroud)

我想要做的是终止由source-to-server.ffs_real(它被称为RealtimeSync.exe)启动的进程——换句话说,在设置之前包括一种拆卸。在其他地方我已经阅读过pkillkillall但这些在我的 PATH 中不可用。当然必须有一个windows本机的方式来做到这一点?

windows powershell command-line process batch-file

0
推荐指数
1
解决办法
2695
查看次数