小编Sim*_*onS的帖子

仅针对尝试部署的开发人员锁定的文件

我们的开发人员使用 VisualStudio 2017

他们使用我编写的 Post-Build PowerShell 函数将应用程序发布到正确的目的地。

有时(100 次中有 1 次)他们会收到以下错误:

Copy-Item : The process cannot access the file 'X:\xy\application.exe' because it is 
9>  being used by another process.
Run Code Online (Sandbox Code Playgroud)

问题是 - 它没有被另一个进程使用。任何其他用户(例如我)可以重命名目标中的文件,删除它或其他任何。

当开发人员重新启动他的计算机时,他可以毫无问题地发布应用程序。

所以在我看来,他的文件系统搞砸了一些事情。我们尝试了

taskkill /im explorer.exe /f && start "" explorer.exe 但这没有帮助。

如果开发人员使用他的资源管理器查看目标,即使我删除了目标文件,开发人员也会看到目标文件。

怎么会这样?我们如何解决这个问题?

PowerShell 函数本身非常轻量级。它基本上是为了部署:

Write-Host "Starting Copying files to $d"
$Copy = Copy-Item $FilesToPublish $d -Force -Recurse
Write-Host "Finished Copying files to $d"
Run Code Online (Sandbox Code Playgroud)

如果指定(并且已指定),该函数还将删除目标的所有锁

Get-SmbOpenFile -CimSession $Session | ? { $_.Path -like "$EndPath*" } | Close-SmbOpenFile -Force …
Run Code Online (Sandbox Code Playgroud)

windows powershell filesystems deployment

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

IIS 7.5 - 不能在一个 IP 地址下配置两个 SSL 证书?

我们正在为所有网站设置 HTTPS。不幸的是,我在 IIS 方面并没有真正的经验。

我有两个证书,一个是包含 10 个子域的 EV-UCC-Certificate。子域来自两个不同的域,如下所示:

shop.abcdomain.com
www.xzydomain.com
Run Code Online (Sandbox Code Playgroud)

我也有这些域之一的通配符证书 *.abcdomain.com

两个域都在同一 IP 地址下的同一 IIS 服务器上运行。

当我将通配符证书分配给我的某些网站时,一切正常,但是当我想将 EV-UCC 证书分配给 IIS 中同一“站点”集合中的另一个站点时,我收到以下错误

至少有一个其他站点正在使用相同的 HTTPS 绑定,并且该绑定配置了不同的证书

我对此有点困惑。为什么我不能在同一个 IIS 上分配两个不同的证书?一个 IIS 上只能有一个 SSL 证书吗?如果是这样,是否有解决方法让 IIS 认为他可以携带两个 SSL 证书?

我在 Windows Server 2008 R2 上运行 IIS 7.5

windows iis iis-7.5 ssl-certificate windows-server-2008-r2

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

将服务器添加到RDS的服务器池的PowerShell命令是什么

我们有一个 RDS Serverfarm,其中包含一台 AD 服务器和两台 RDS 服务器。AD是Server 2012 R2,RDS服务器是Server 2016。

当我通过 Teamviewer 在服务器重启后登录到 RDS 服务器并打开 servermanager 来管理连接时,我总是必须将服务器添加到服务器池中,以查看连接。这有点烦人

是否有可用于设置服务器池的 PowerShell cmdlet?

谢谢!

powershell remote-desktop remote-desktop-services windows-server-2016

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

为什么我的登录脚本没有映射任何驱动器?

我在 PowerShell 中编写了一个登录脚本。该脚本嵌入在 GPO 中,并在用户登录域时运行。

我的问题是,我在脚本中部署的驱动器没有被部署。我确信登录脚本会运行,因为在脚本结束时我会向自己发送一封电子邮件,但我总是会收到它。所以运行脚本应该不是问题。$Error每次脚本运行时,我都会记录整个变量,但没有说明为什么会发生此错误。

我几乎可以肯定错误不在脚本本身中 - 我认为它必须是权限错误。

我认为当我-NoProfile在运行脚本时指定参数时可以解决这个问题,但我不知道将它放在 GPO 的哪个位置。由于美观原因,我不希望批处理文件调用脚本:-)。

编辑:指定-noprofile没有解决问题

编辑:由于有评论说没有足够的关于驱动器如何映射的信息,我将整个映射部分粘贴在下面:

# UserOU as a parameter, value set in GPO
Param([string]$UserOU)

# preparing some stuff...
Import-Module .\SecureStringFunctions.psm1
[Byte[]]$key = (1..16)
$pw = Get-Content .\LocalAdminCred.txt | ConvertTo-SecureString -key $key

# Tried this to elevate the Script IF it's needed. Didn't solve my problem. works only on PS 4.0 but didn't solve the issue on my 5.0 machine
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) 
{ Start-Process …
Run Code Online (Sandbox Code Playgroud)

windows powershell logon-scripts group-policy

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

如何检查 SQL Server 2019 Standard 是否在 Server Core 上激活?

我通过从MSDN下载的 ISO 在 Windows Server 2019 Core 上安装了 SQL Server 2019 Standard 。当我下载它时,它特别指出“不需要产品密钥”。

由于我将其安装在 Server Core 上,因此我遵循了这些说明

如果您查看说明,会发现/PID需要一个参数来告诉安装程序要安装的 SQL Server 版本(例如 Express、Developer、Standard 等)

但是,我没有找到 SQL Server 2019 标准版的产品 ID。MSDN 中没有,VLSC 中没有,互联网上的其他地方也没有。

该指令指出:

SQL Server 设置控制/PID

指定 SQL Server 版本的产品密钥。如果未指定此参数,则使用评估。

这让我相信我的 SQL Server 现在处于评估模式。我现在想检查我的 SQL Server 是否已获得许可,以及它是如何获得许可的(我应该拥有 4 核的许可证)。

事情有点复杂,因为另一个具有 4 个核心的 SQL Server 的虚拟机(在另一个许可协议中获得许可)正在同一台物理机上运行,​​我读到必须获得物理核心的许可,而不是虚拟机核心。我的新虚拟机上的新 SQL Server 现在是否也使用与其他虚拟机相同的许可证?

然而,我的问题是我不知道我的 SQL Server 现在是否已获得许可。我运行了以下查询:

PS C:\Users\Administrator\Documents> Invoke-SqlCmd -Query "SELECT @@Version" | fl *


Column1   : Microsoft SQL Server …
Run Code Online (Sandbox Code Playgroud)

windows windows-server-core sql-server windows-server-2019

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