标签: powershell

如何使用 PowerShell /其他脚本设置打印机权限?

我需要在脚本中更新打印机的权限,即执行与我手动执行的操作相同的操作:

  1. 打开设备和打印机小程序
  2. 双击默认打印机(打开其队列)
  3. 转到打印机 -> 属性
  4. 在属性对话框中,转到安全选项卡
  5. 更改每个人的权限(例如,检查管理文档权限)

怎么做?例如,在 PowerShell 中,我可以这样做

Get-WmiObject -class win32_printer -filter Default=True
Run Code Online (Sandbox Code Playgroud)

获取默认打印机,然后有方法getSecurityDescriptor()setSecurityDescriptor()但例如这个命令:

(Get-WmiObject -class win32_printer -filter Default=True).getsecuritydescriptor().Descriptor
Run Code Online (Sandbox Code Playgroud)

返回 null 所以我不确定我是否以正确的方式这样做。

有人有设置打印机权限的工作示例吗?我是否走在正确的道路上,或者我应该完全使用 WMI 以外的其他东西?谢谢。

windows printer powershell wmi

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

如何在Windows上通过cmd或powershell查看互联网浏览历史记录?

我想检查计算机的 Internet 浏览历史记录,并且我想从命令行或 PowerShell 执行此操作。

是否有任何 Windows 命令或工具可以执行此操作?

windows powershell command-line

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

如何获取不同硬盘分区的GUID?

我尝试使用 BCDEDIT 和 DISKPART,但这些工具给我的 ID 不是 GUID 注意:我正在 Windows 7 中进行测试

powershell hard-drive command-line partitioning bcdedit

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

通过 PowerShell 远程安装 .NET Framework 4.5

我正在尝试通过 PowerShell 会话以这种方式将 .NET Framework 4.5 安装到远程 Win2008R2 服务器(用户位于服务器管理员组中):

$session = New-PSSession -ComputerName $server -Credential Get-Credential
Invoke-Command -Session $session -ScriptBlock {Start-Process -FilePath "C:\temp\dotnetfx45_full_x86_x64.exe" -ArgumentList "/q /norestart" -Wait -PassThru}
Run Code Online (Sandbox Code Playgroud)

然后我得到这个错误:

Executable: C:\temp\dotnetfx45_full_x86_x64.exe v4.5.50709.17929

--- logging level: standard ---
Successfully bound to the ClusApi.dll
Error 0x80070424: Failed to open the current cluster
Cluster drive map: ''
Considering drive: 'C:\'...
Drive 'C:\' has been selected as the largest fixed drive
Directory 'C:\aa113be049433424d2d3ca\' has been selected for file extraction
Extracting files to: C:\aa113be049433424d2d3ca\
Error …
Run Code Online (Sandbox Code Playgroud)

powershell remote .net-framework

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

通过资源管理器上下文菜单对名称中包含“&”符号的项目执行 PowerShell 脚本

我正在使用此答案中给出的技术的稍微修改版本来在 Windows 文件资源管理器中创建一个上下文菜单项,该项目允许我针对特定文件夹运行 PowerShell 脚本。

该命令如下所示:

cmd /K PowerShell "C:\PowerShellScript\folder_script.ps1 \"%1\" | clip" 
Run Code Online (Sandbox Code Playgroud)

除非文件夹名称中包含与号 (&),否则此操作正常。然后我收到以下错误(目标文件夹名为Testing & Testing):

The string starting:
At line:1 char:37
+ C:\PowerShellScript\folder_script.ps1  <<<< "E:\tmp\Testing
is missing the terminator: ".
At line:1 char:53
+ E:\Dropbox\PowerShell\namefixer.ps1 "E:\tmp\Testing  <<<<
    + CategoryInfo          : ParserError: (E:\tmp\Testing :String) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
Run Code Online (Sandbox Code Playgroud)

显然有些东西将&符号解释为特殊字符,但我不知道如何解决这个问题。从文件夹名称中删除&符号对我来说不是一个可行的解决方案。

不涉及批处理脚本的解决方案将是首选。

我使用 Windows 7 Enterprise(64 位)和 PowerShell 2。

powershell

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

Powershell 使用 LastWriteTime 前缀重命名多个文件

我正在尝试编写一个 Powershell 脚本,该脚本将:

- 从根目录递归搜索 -
排除具有现有“yyyyMMdd”文件名前缀的
文件 - 根据特定的 LastWriteTime,使用“yyyyMMdd”文件名前缀重命名上面未排除的文件

注意:理想情况下,该脚本应包含所有文件类型扩展名

我自己也尝试过,但这似乎超出了我的能力范围,因为我的尝试进展并不顺利。

提前致谢。

http://ss64.com/ps/syntax-stampme.html

#StampMe.ps1
param( [string] $fileName)

# Check the file exists
if (-not(Test-Path $fileName)) {break}

# Display the original name
"Original filename: $fileName"

$fileObj = get-item $fileName

# Get the date
$DateStamp = get-date -uformat "%Y-%m-%d@%H-%M-%S"

$extOnly = $fileObj.extension

if ($extOnly.length -eq 0) {
   $nameOnly = $fileObj.Name
   rename-item "$fileObj" "$nameOnly-$DateStamp"
   }
else {
   $nameOnly = $fileObj.Name.Replace( $fileObj.Extension,'')
   rename-item "$fileName" "$nameOnly-$DateStamp$extOnly"
   }

# Display the new name
"New …
Run Code Online (Sandbox Code Playgroud)

powershell

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

通过脚本创建和配置 Windows 任务栏工具栏

当我右键单击 Windows 任务栏工具栏时,我可以切换一些选项,例如“显示文本”“显示标题”“锁定任务栏”。我还可以重新排序工具栏上的图标并设置其位置。

我如何通过脚本执行以下操作?

  • 创建新的任务栏工具栏
  • 设置工具栏位置
  • 设置图标的顺序
  • 切换显示文本
  • 切换显示标题
  • 锁定工具栏

windows toolbar taskbar powershell

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

如何在cmd管道中使用powershell命令?

我想在一些长的 cmd.exe 管道中使用 powershell 的“替换”;如何从 cmd 重定向到 powershell 输入?下面的行不起作用,给出空输出:

c:\>(echo foo && echo bar) | powershell -Command "%{$_ -replace \"f\",\"x\"}"
Run Code Online (Sandbox Code Playgroud)

windows powershell command-line

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

通过 powershell 更改键盘重复率

我的笔记本电脑有一个问题,从休眠状态唤醒后键盘的重复率变得非常慢。我可以通过在控制面板中向下调整速率,应用新速率,然后再次向上调整并应用来解决此问题。但我宁愿不要每次都这样做。

我发现重复率存储在注册表“HKCU:\Control Panel\Keyboard\KeyboardSpeed”中,并且可以通过 powershell 设置它。但是,新的速率似乎并未应用(即,无论我将值设置为多少,重复速率都不会受到影响)。我必须做其他事情才能保持利率不变,但我不知道那是什么。作为记录,以下是我设置注册表值的方法:

set-itemproperty "HKCU:\Control Panel\Keyboard\" -name KeyboardSpeed -Value 3
Run Code Online (Sandbox Code Playgroud)

windows-7 powershell

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

重新聚焦后,Powershell ISE 滚动到控制台底部

使用 PowerShell ISE:

如果使用分割视图(同时显示控制台和脚本窗格),从脚本窗格(或另一个控制台选项卡)重新聚焦控制台将始终滚动到底部。

要观察此效果,请在控制台中向上滚动,以便隐藏底部的提示(显然,如果要向上滚动,则需要一些输出)。此时,您可以单击控制台中的任意位置来选择并复制文本。您甚至可以将焦点从 ISE 上移开,然后单击您最喜欢的 Web 浏览器或文本编辑器,然后在 ISE 控制台中单击返回,滚动不会发生变化。

问题是当您单击脚本窗格时。一旦您从 ISE 内的控制台失去焦点,您的命运就已注定。当您单击返回控制台时,它将滚动到最底部!单击另一个控制台选项卡也会将其滚动到底部。

我制作了下图,以防我的描述令人困惑。彩色圆圈代表点击次数。绿色点击不会导致控制台滚动。橙色的点击决定了红色点击的命运,红色的点击将滚动控制台。

在此输入图像描述

此问题使得将多个项目从控制台顶部复制到脚本窗格变得不切实际,因为每次都必须向上滚动。您可以在粘贴之前将所有内容复制到单独的文本编辑器中,但这是愚蠢的,而且几乎同样不切实际。

我尝试使用 CTRL+I 和 CTRL+D 在脚本窗格和控制台之间切换,但出现相同的滚动效果。

我在 Windows 7 上使用 PowerShell 3。

windows powershell scrolling

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