PowerShell 安装程序在 Windows 10 上给出 2203 错误代码。我的权限配置正确。还有什么可能导致此错误?
如果您使用 Powershell 模块NetSecurity使用 eg 命令对 GPO Windows 防火墙规则进行任何修改New-NetFirewallRule
,或者Set-NetFirewallRule
更改不会立即应用。我只能通过随后在 MMC GUI 中进行任何更改(这似乎是重新加载它)或重新启动计算机来做到这一点。
也许可以使用 Windows 防火墙 API FwPolicy2或旧版 cmdline 工具,netsh
但如果可能的话,我更愿意使用 NetSecurity 模块来完成?
我有以下代码,我希望我的小程序显示值一,停止服务,然后显示值二。
我已经检查了此处的文档,它确认下一个命令应在执行 IF 语句的真/假之后执行。
https://www.pdq.com/blog/how-to-use-if-statements-in-powershell/
$AccServiceName = 'AccountLoaderService'
$AccService = Get-service $AccServiceName
if ($AccService.Status -eq 'Running')
{
Write-Host '1'
Stop-Service $AccServiceName
}
Start-Sleep -Seconds 20
if ($AccService.Status -eq 'Stopped')
{
Write-Host '2'
}
实际情况是,它显示数字 1,但不显示数字 2。
该服务肯定会在指定的 20 秒内停止,如果我随后立即再次运行该命令,不包含 sleep 语句,它将返回数字 2 的值。
希望这是有意义的,任何帮助都将不胜感激。
由于 guestmailuser 在我们的 Exchange 管理中心 > 联系人中出现了两次,因此我们无法向特定的外部电子邮件地址发送电子邮件。
该用户在 Entra 中不存在(已被 MSFT 支持删除)并且无法在 365 管理中心中搜索。
我尝试使用各种 powershell 命令删除用户,但它抱怨“双写入,Azure AD 调用是为了保持对象在 Azure AD 和 Exchange Online 之间同步)(这是使用 Entra ID Sync 同步到本地 AD 的环境)。我还想指出,我在本地 AD 中也找不到此用户。
正如所提到的,我们与 MSFT 有一张票,但在 2 周的“我们正在升级”之后,我转向了论坛。
任何帮助都将受到赞赏。
我可以使用以下命令下载单个独立的 HTML 文件:
wget https://www.bbc.co.uk/news/articles/c99rgj0xkryo
但 wget 会将文件另存为index.html
而不是Nation falls silent as King leads Remembrance ceremony.html
。如何让 wget 使用页面标题?
在这种情况下,我并不关心离线文件的链接是否被破坏。我只关心下载独立的页面。
我在:
- Windows 11
- 普什尔 7.4
尝试从cmd:$DATA
中的文件中删除 Stream ,但没有任何效果,除了powershell之外,是否不再可能使用纯cmd / batch来删除?
重新创建/重现场景并显示失败的尝试......
- 首先将字符串写入
:Stream
文件:
>"C:\Path\To\LogError.Log::Stream.Report" (echo/[CopyStatus]&echo/Error=3)
:Stream
第二步从文件中读取字符串:
more < "C:\Path\To\LogError.Log:Stream.Report"
:: output:
[CopyStatus]
Error=3
- 第三个列表/检查
:Stream
文件中的内容:
dir /r "C:\Path\To\LogError.Log:Stream.Report" | find "$DATA"
:: Output:
25 LogError.Log:Stream.Report:$DATA
- 第四次尝试通过多次尝试从文件中删除
:Stream.Report
( )::$DATA
cd.>"C:\Path\To\LogError.Log:Stream.Report"
cd.>"\\?\C:\Path\To\LogError.Log:StreamReport'"
echo.>"C:\Path\To\LogError.Log:Stream.Report"
echo.>"\\?\C:\Path\To\LogError.Log:Stream.Report"
more < nul > "C:\Path\To\LogError.Log:Stream.Report"
more < nul > "\\?\C:\Path\To\LogError.Log:Stream.Report"
fsutil reparsepoint delete "C:\Path\To\LogError.Log:Stream.Report"
fsutil reparsepoint delete "C:\Path\To\LogError.Log:Stream.Report"
wmic datafile where "name='C:\\Path\\To\\LogError.Log'" delete "Stream.Report"
wmic datafile where "name='C:\\Path\\To\\LogError.Log:Stream.Report'" delete "Stream.Report"
- 第 5 列表/检查(再次)
:Stream
文件中的内容以验证它们是否已被删除:
dir /r "C:\Path\To\LogError.Log:Stream.Report" | find "$DATA"
:: output
25 LogError.Log:Stream.Report:$DATA
more < "C:\Path\To\LogError.Log:Stream.Report"
:: Output:
[CopyStatus]
Error=3
- 没有任何变化......
$DATA
仍然留在文件中。
我正在尝试做什么,但我被卡住了。
我成功删除了内容:Stream:
,但没有$DATA
从文件中排除流;它仍然存在:
>dir /r LogError.Log
Directory of C:\Path\To
10/22/2024 05:24 AM 17,083 LogError.Log
25 LogError.Log:Stream.Report:$DATA
1 File(s) 17,083 bytes
0 Dir(s) 128,989,868,032 bytes free
没有任何困难,它直接与powershell一起工作
Remove-Item -Path "C:\Path\To\LogError.Log:Stream.Report"
Get-Content -Path "C:\Path\To\LogError.Log:Stream.Report"
有没有办法:$DATA
使用纯powershell和批处理来删除?我正在寻找一种允许我在两种环境中处理此问题的解决方案,但我发现每个工具都面临限制。如何在两个平台上实现相同的功能?
cmd.exe /c '(echo/[CopyStatus]&echo/Error=3)>"C:\Path\To\LogError.Log:Stream.Report"'
:: Not work:
[System.IO.File]::WriteAllText("C:\Path\To\LogError.Log:Stream.Report", "[CopyStatus]")
[System.IO.File]::WriteAllText("C:\Path\To\LogError.Log:Stream.Report", "[Error=3]" )
"[CopyStatus]" | Out-File -FilePath "C:\Path\To\LogError.Log:Stream.Report" -Encoding utf8
"[Error=3]" | Out-File -FilePath "C:\Path\To\LogError.Log:Stream.Report" -Encoding utf8
但是在cmd中,我无法删除,在powershell中,我无法写入。感觉我被困在中间:PowerShell 可以执行两个操作(读取和删除),而 cmd 也可以执行两个操作(写入和读取)。
为什么我不能在powershell中执行所有三个操作,也不能在cmd中执行所有三个操作? 有办法实现吗?
- 概括起来,问题的关键点如下:
问题: | 到: |
---|---|
1.删除: File.Log:$DATA | 命令/命令 |
2. 写入: File.Log: Stream:$DATA | powershell |
我的任务是替换大约 10000 个文件(包括子文件夹)中的文件名中的某些字符。
所以在我的例子中我想将字符 # 更改为哈希。
我的文件位置是“C:\Users\JHB Laptop\Documents”,主文件名为测试“C:\Users\JHB Laptop\Documents\test”。
子文件夹为“C:\Users\JHB Laptop\Documents\test\New folder1\New folder2\New folder3\New folder4\New folder5”
我改编了用户 331812 Malcolm 的这段代码
{cd "C:\Users\MyName\Documents\MyDirectory"
# by default, -replace is case-insensitive (equivalent to -ireplace)
# for case-sensitive, use -creplace
Dir | Rename-Item –NewName { $_.name –replace "_"," " }}
以下是我的修正:
cd "C:\Users\JHB Laptop\Documents\test"
# by default, -replace is case-insensitive (equivalent to -ireplace)
# for case-sensitive, use -creplace
Dir | Rename-Item –NewName { $_.name –replace "#","(hash)" }
这部分工作正常,但当然会停止在字符串中的最后一个文件夹
这就是我的知识范围。我看到 -recurse 在子文件夹中发挥作用,但我无法弄清楚它在项目中的位置。
在研究我需要的命令以获得答案所需的正确输出时,我花了几个小时试图弄清楚这一点,但无法确定为什么它没有按照应有的方式生成输出(在 PowerShell 5 和 7 中都会发生)。
返回的第一行格式不正确,但返回的输出的后续所有行均格式正确:
- 当前输出:
ForEach
||||Get-Disk
Get-Partition
Get-PSDrive
Write-Host
当直接复制终端输出时,问题变得更加令人困惑:PS $ # Match drive serial numbers to their drive letter mountpoints: $drive = (Get-PSDrive).Name -match '^[c-z]$' ""; Foreach ($letter in $drive) { Write-Host $letter': ' -nonewline Get-Partition -DriveLetter $letter | Get-Disk } C: Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition Style ------ ------------- ------------- ------------ ----------------- ---------- ---------- 3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT D: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT H: 1 Samsung SSD 870 EVO 4TB S*************R Healthy Online 3.64 TB GPT M: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT P: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT V: 3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT
C: Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition Style ------ ------------- ------------- ------------ ----------------- ---------- ----------3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT D: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT H: 1 Samsung SSD 870 EVO 4TB S*************R Healthy Online 3.64 TB GPT M: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT P: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT V: 3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT
- 预期输出:
Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition Style ------ ------------- ------------- ------------ ----------------- ---------- ---------- C: 3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT D: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT H: 1 Samsung SSD 870 EVO 4TB S*************R Healthy Online 3.64 TB GPT M: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT P: 0 Samsung SSD 870 EVO 4TB S*************H Healthy Online 3.64 TB GPT V: 3 Samsung SSD 850 EVO mSATA 1TB S*************V Healthy Online 931.51 GB GPT
我已经购买了一台 VM,并使用 RDP 连接到它。现在我从网上下载了 2 个文件;Microsoft Edge exe 文件 + PowerShell 7.0 MSI 文件,如下所示:-
然后使用管理员用户>>我毫无问题地安装了 Microsoft Edge。但是当我试图安装 PowerShell MSI 文件时,我被拒绝访问:-
我联系了提供 VM 的公司,他们提到了以下内容:-
请查看此链接了解如何安装较新的 PowerShell: https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows ?view=powershell-7.4 我们提供非托管服务,这意味着我们负责提供硬件,但维护和配置操作系统级别及以上服务器仍然是客户的责任。
默认情况下,我们对您希望在服务器上运行的软件类型没有任何限制。虽然访问服务器的标准协议是 SSH(安全 Shell 协议)和 RDP(远程桌面协议),但对于高级用户,我们还提供 Contabo API 来使用 HTTP 管理资源:https://api.contabo.com/
什么原因可能导致“访问被拒绝”错误?
我不确定到底发生了什么,但根据@Ramhound 的说法,在我运行此命令后:-
C:\Users\Administrator>msiexec.exe /package PowerShell-7.4.3-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1 USE_MU=1 ENABLE_MU=1 ADD_PATH=1
当我右键单击文件夹时,我开始看到 PowerShell 7:-
再会!
我们用户的标准纸张是 A4。但是,打印机安装后,“原始尺寸”始终默认为 A3 或 Letter。即使尝试以以下形式手动保存打印首选项:
这就迫使用户每次打印时都要更改尺寸。这很令人困惑和烦恼。
我尝试过的:
调整此设置,使用打印管理控制台界面导出打印机,然后使用 printbrm.exe 通过 powershell 脚本将其导入到所有域计算机。打印机成功导入,但设置仍然为 A3。
尝试在所有计算机上运行以下命令:
Set-PrintConfiguration -PrinterName "Printer-Name" -PaperSize A4
它运行时没有错误,也没有任何影响尝试更改 CimInstance”,
Get-CimInstance -class Win32_PrinerConfiguration | Where-Object { $_.Name -eq "Printer-Name" } | Set-CimInstance -Property @{PaperSize="A4"}
但没有成功,因为该实例实际上是只读的。
另外,想提一下,我们没有打印服务器。它是通过在 printbrm.exe 中导入打印机驱动程序添加的“简单”网络打印机。
您能通过 powershell 帮助完成此操作吗?