我注意到当您尝试通过上下文菜单 » Edit打开 PowerShell 脚本 (.ps1) 时,Windows 10(至少是当前的稳定版本 1607)无法正确转义文件名。
虽然与号和空格被正确处理,但 Windows 无法打开名称包含逗号的文件 - 文件名在逗号处被截断。
我正在寻找解决此问题的方法,无论是通过注册表修复还是添加引号、转义逗号或其他任何方法。
我正在尝试在 PowerShell 中创建一个命令,将所有用户从 Active Directory 服务器导出到一个 CSV 文件。它应该包括姓名、姓氏和身份。
我尝试运行:
Get-ADUser -Filter {Enabled -eq "True"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table
我收到此错误:
未找到“Get-ADUser”。
我试图找出在 powershell 中将命令调用为 command-let (cmdlet) 的命名法。为什么它们根本不称为命令,而是(有什么区别?)。我只能从这个维基百科页面猜测,这可能是命令行界面的缩写,用于与用 Microsoft .NET 编写的命令进行交互。
编辑:我发现了一个有趣的相关线程 - Powershell cmdlet vs .NET Class
我有一个很大的文件夹,里面有很多子文件夹,我写了这个命令来删除子文件夹中的文件,我想用脚本 PowerShell 做同样的事情。
例如:
del /F /S /Q "C:\QQQ\*.RAW"
Run Code Online (Sandbox Code Playgroud)

时不时地,我需要在多个 Windows 服务器上运行一个命令(从包含脚本文件 [和其他随机内容] 的源代码存储库中同步文件)。该命令的执行时间由网络延迟决定。
目前,我使用 PowerShell 的 Invoke-Command cmdlet,但它在每个主机上按顺序运行命令。由于这个脚本需要很长时间才能运行(有时每台服务器需要几分钟),我想通过一次在所有服务器上并行运行命令来加快速度。
据我所知,Invoke-Command 无法做到这一点。SysInternals 的 psexec 也不能这样做。
我隐约知道 PowerShell 有一个并行循环工具,可以在多个线程上同时执行多次循环迭代。但是文档指出这仅在我不熟悉的 PowerShell 工作流程中可用,这听起来有点矫枉过正。
在 Unix-y shell 中,我可以在后台运行 psexec 的每次调用。但据我所知,PowerShell 不支持这一点。或者我可以使用像 GNU parallel 或 ts 这样的工具。
在 Windows 7 机器上有(简单的)方法可以做到这一点吗?
如果所有其他方法都失败了,我可以编写 Perl 脚本之类的东西,但为什么要重新发明轮子呢?我当然不是第一个遇到这个问题的人。
我正在使用下面的 powershell 命令安装sliksvn Subversion 客户端,但在安装过程中我假设它必须将 svn 可执行文件添加到 PATH 环境变量中,这意味着在安装失败后,svn 命令会在同一窗口中运行。 exe 不在 PATH 上,有没有办法重新加载 PATH 变量而不必关闭并重新打开 powershell 窗口?
我可以使用 svn.exe 的完整路径,但如果可能,我会尽量避免这种情况
Start-Process -Wait -FilePath "$($pwd.path)\assets\Slik-Subversion-1.9.7-x64.msi" -ArgumentList "/passive";
Run Code Online (Sandbox Code Playgroud) 我对 powershell 很陌生,我需要帮助我的同事在包含单词/Documents/.
输出必须在包含该文件中的路径和行的文本文件中。
首先,我设法使用以下代码提取路径。但我无法包含以下几行:
$path = 'C:\Users\XXX'
$Text =”/Documents/"
$PathArray = @()
Get-ChildItem $path -Filter *.rdl -Recurse |
ForEach-Object {
If (Get-Content $_.FullName | Select-String -Pattern $Text ){
$PathArray += $_.FullName
$PathArray += $_.FullName
#write-Host "jhk"
}
$PathArray | % {$_} | Out-File "C:\Users\XX\tes2.txt"-Append
}
Write-Host "Contents of ArrayPath:"
$PathArray | ForEach-Object {$_}
Run Code Online (Sandbox Code Playgroud)
此代码有效,但如上所述,我不确定如何添加行。
我想以用户身份打开一个新的 powershell.exe,但具有管理员权限(此用户已添加到管理员组)。
要以用户身份打开新的 powershell.exe,我使用了以下命令:
runas /profile /user:emma powershell.exe
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式改变它以获得我需要的东西吗?
上下文:我有一个 Vagrantfile 来配置虚拟机,这个虚拟机安装了 SQL-SERVER 2012、2014、2016 和 2017。当我检查 SQL SERVER CONFIGURATION MANAGER 时,我看到在每个 SQL-SERVER 实例中都禁用了 TCP/IP 协议。
有没有办法通过powershell脚本或sql脚本启用它们?
设置中的 Windows 更新页面包含一个Last Checked时间戳,我试图确定是否有可能以某种方式查询机器以获取此信息(通过命令提示符、PowerShell、注册表查询等)
我搜索了Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate我的注册表的一部分,发现没有与我的Last Checked.
有没有办法查询这个?目标是能够查询远程计算机的信息,以避免必须远程访问它。
运行 PowerShell 命令$(New-Object -ComObject Microsoft.Update.AutoUpdate).Results.LastSearchSuccessDate返回具有匹配日期但时间不匹配的时间戳
powershell ×10
windows ×4
command-line ×3
file-search ×1
filenames ×1
runas ×1
sql-server ×1
user ×1
vagrant ×1
windows-10 ×1