我希望使用 PowerShell 删除用户的文件夹权限。我找到了很多有关如何删除用户权限的示例,但实际上我想完全删除用户。
相当于在 Windows 资源管理器中执行以下操作: 1. 右键单击文件夹并选择属性。2. 单击“安全”选项卡 3. 单击“编辑” 4. 突出显示用户或组。5. 单击“删除”
我试图在 PowerShell 中模仿“删除”的点击操作。
提前致谢。
我有一个 Powershell 脚本,它通过 Windows 包管理器Chocolatey安装和更新软件。
如果我以用户身份执行 PS 脚本,一切都很好。因此,必须存在另一个问题,例如限制执行策略(通过 GPO 设置为不受限制)。
如何获取 Powershell 的输出?我正在使用 Start-Transcript,但我无法在任何地方找到输出文件,如果我指定路径,它不会创建日志文件...
Powershell 脚本在启动期间作为计算机 GPO 执行。
还有其他我没有想到的调试选项吗?
我有一个 Powershell DSC 自定义资源,嵌入在模块中。如果您想查看完整的代码,可以在这里找到,但这可能不是必需的;我的问题不在于(我认为)我编写的代码,而在于如何访问它。
就我而言,我使用的是 DSC 推送模式。我使用一个普通的 Powershell 脚本来安装所需的模块、编译配置并启动它。在该脚本中,我将模块的位置添加到$env:PSModulePath. 完成此操作后,我可以看到该模块并将其导入我的交互式 shell 中,如下所示:
PS> Get-Module -ListAvailable | Where-Object -Property Name -eq cWinTrialLab | Import-Module
PS> Get-DscResource -Module cWinTrialLab
ImplementedAs Name ModuleName Version Properties
------------- ---- ---------- ------- ----------
PowerShell cWtlShortcut cWinTrialLab 0.0.1 {Ensure, ShortcutPath, TargetPath, DependsOn...}
Run Code Online (Sandbox Code Playgroud)
所以我创建一个测试配置文件:
Configuration TestConfig {
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName cWinTrialLab
Node localhost {
cWtlShortcut "TestShortcut" {
Ensure = "Present"
ShortcutPath = "$env:USERPROFILE\Desktop\TestShortcut.lnk"
TargetPath = "C:\Windows\system32\cmd.exe"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用它:
PS> . …Run Code Online (Sandbox Code Playgroud) 我正在尝试自动化一些配置,作为其中的一部分,我们需要通过脚本添加 ODBC DSN。我尝试使用的驱动程序是 Cloudera Impala ODBC Connector,从此处下载。将运行此程序的所有计算机都将运行 Windows,其中大多数是 Windows 8.1 或 10。我已在 Windows 7(如果可能)和 Windows 10 上测试了以下所有内容,结果相同。我可以在这台机器上手动创建 DSN,因此驱动程序似乎已正确安装。我还使用用户 DSN 和系统 DSN 尝试了所有这些,但没有成功。
根据here,有三种方法可以做到这一点。第一个是直接扰乱注册表,如果可能的话我想避免这种情况。
第二种是使用 odbcconf。问题是,当我在 Windows 7 和 Windows 10 上运行以下命令时,它会出现 ODBC 管理器的配置窗口,但我指定的值均未填写。如果我为 SQL Server 创建 DSN,则此然而,确实有效,所以它似乎是特定于驱动程序的。我已经仔细检查过我的设置是否正确,但甚至连名称都没有设置好。请参阅下面的屏幕截图了解其外观。
odbcconf CONFIGSYSDSN "Cloudera ODBC Driver for Impala" "DSN=Testing|Server=server"
Run Code Online (Sandbox Code Playgroud)
第三种是使用Powershell CmdLet、Add-OdbcDsn。当我对 SQL Server 或 Cloudera Impala 运行以下命令时,它只是挂起,甚至在 10 分钟后也没有返回。Powershell 的资源使用率基本上为 0,并且我没有看到系统上有任何活动。ODBC 管理器中未显示 DSN。
Add-OdbcDsn -Name "testing" -Driver "SQL Server" -DsnType "System"
Run Code Online (Sandbox Code Playgroud)
关于如何解决这两个问题以便我可以继续前进有什么想法吗?
我知道 0.0.0.0 上的监听套接字正在监听所有 IPv4 接口。但如果我们在 powershell 中检查,我们也会在 0.0.0.0 上看到很多“绑定”库存Get-NetTCPConnection。全部位于高端口号 (63000+) 上,本地和远程地址均为 0.0.0.0,远程端口为 0。
这可能是什么类型的插座?我们在 Windows Web 服务器 (2016) 上看到了这一点,该服务器为许多网站 (IIS) 提供服务。该服务器还托管 ASP.NET 状态服务器,也可以从同一网络中的另一台服务器访问该服务器。
当这些站点上有大约 50-100 个活跃用户时,大约有 1000 个套接字处于打开状态。当活动增多时,这些套接字的数量也会增加。
我使用 mof / dsc 配置更新了服务器,本质上更改了各种权限/注册表项以确保安全合规性。这在某种程度上是自动生成的,我确实有一个配置的所有内容的列表,但它有点难以阅读并且不太清楚。
在此过程之后,powershell 无法更新新包或设置其默认存储库。
我不认为这是 NuGet 特有的东西,我的预感是它与某种更基本的文件权限有关。据我所知,NuGet 已安装在我的系统上,我知道它是在应用此配置之前安装的,并且我所知道的内容并未被删除。
我已经仔细检查了工作服务器,并且 NuGet .dll 上的权限看起来相同。
下面是一个错误示例:
PS C:\Windows\system32> Register-PSRepository -Default
PackageManagement\Import-PackageProvider : No match was found for the specified search criteria and provider name
'NuGet'. Try 'Get-PackageProvider -ListAvailable' to see if the provider exists on the system.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7302 char:25
+ ... $null = PackageManagement\Import-PackageProvider -Name $script:Nu ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (NuGet:String) [Import-PackageProvider], Exception
+ FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.ImportPackageProv
ider
NuGet provider is required to continue
PowerShellGet …Run Code Online (Sandbox Code Playgroud) 我们有一组运行 Windows 11 的ThinkPad X1,它们在使用 PowerShell(确切地说是 .NET Core 7.2.2)时表现出相同的症状。
配置文件加载非常慢(Chocolatey 的模块显示加载时间超过 2000 毫秒,并且已验证 Chocolatey 不是问题所在)和整体响应速度(例如命令完成和 shell 再次准备就绪之间至少需要一秒钟)。
除了(不相关?)智能卡错误(这没有多大意义,因为除了 4G-LTE 调制解调器之外,这些机器上没有卡设备),事件查看器为空。
Smart Card Reader 'Microsoft UICC ISO Reader 89946827 1' rejected IOCTL TRANSMIT: Access is denied. If this error persists, your smart card or reader may not be functioning correctly.
Command Header: 00 a4 04 00
Run Code Online (Sandbox Code Playgroud)
启动它并-NoProfile没有改变任何东西,重新安装 PowerShell Core 也没有改变。研究错误也没有给出答案。
有没有办法让PowerShell恢复正常速度?
我使用 Powershell 将 vSphere 环境的凭据保存到文本文件中ConvertFrom-SecureString。我想使用以下命令在我的 powershell 脚本中使用此凭据:
$password4host = get-content C:\shutdown\HostsCred.txt | convertto-securestring
如果我想通过服务执行 powershell 脚本,我会收到无法从文本文件中读取凭据的错误。这似乎属于这样的事实:将安全字符串保存在文本文件中与将这些凭据保存到文本文件的用户绑定在一起。只有用户自己才能解密凭证。
代码片段:
$time = ( get-date ).ToString('HH-mm-ss')
$date = ( get-date ).ToString('dd-MM-yyyy')
$logfile = New-Item -type file "C:\shutdown\ShutdownLog-$date-$time.txt" -Force
Import-Module -Name VMware.*
# Some variables
$vcenter = "10.10.10.10"
$username = "fakeuser@vsphere.local"
$username4host = "fakeuser"
$cluster = "ESXi-Cluster"
$datacenter = "Datacenter"
$vCenterVMName = "VMware vCenter Server" #Name of vCenter VM
$StarWindVM1 = "Starwind-VM" #Name of first StarWind VM
$StarWindVM2 = "Starwind-VM (1)" #Name of …Run Code Online (Sandbox Code Playgroud) PowerShell 2.0具有一些超级时髦的远程处理功能。但是,我不清楚它们是否可以在 Windows XP 机器上/之间使用,或者您是否需要 Windows Vista 或 Windows 7。
这是我所拥有的:
一对安装了 SP3 和.NET 3.5的 Windows XP MCE 机器。
两者都安装了 PowerShell 2.0 CTP3。
WS-Management v1.1 安装在两者上(因为 2.0 似乎不适用于 Windows XP?)
有了所有这些,“启用-PSRemoting”仍然让我犯了这个错误:
Enable-PSSessionConfiguration :此计算机未启用或不支持 Windows PowerShell 远程处理功能。这可能是因为您没有安装正确版本的 WS-Management,或者此版本的 Windows 当前不支持远程处理。
通常,此时我的回答是“好吧,我想是时候下载 Windows 7 RC”了,但是我已经看到了足够多的关于人们在 Windows XP 中进出远程处理的模糊评论,这让我觉得这是可能的.
我怎样才能让它发挥作用?
我正在尝试使用基于 SQL 的身份验证,而不是 Windows 集成安全性,通过 SQL Server Powershell Cmdlet(不是 ADO.NET)进行连接。
任何人都知道用于此的格式?
编辑:
我可以使用 SQL Server Management Studio 访问此 SQL-cmdlet 路径。
这样做时,路径是:
SQLSERVER:\SQL\foo\DEFAULT+homer
问题是我无法set-location通过 PowerShell 到达此路径
powershell ×10
windows ×6
credentials ×1
dsc ×1
group-policy ×1
hadoop ×1
laptop ×1
odbc ×1
remoting ×1
service ×1
socket ×1
windows-xp ×1